ir_programmer
شنبه 15 دی 1386, 11:20 صبح
من 2 تا Query بشکل زیر دارم:
1-
select a1 as col1 , a2 as col2 from table1
2-
select b1 as col1 , b2 as col2 from table2
من میخام نتیجه این 2 Query رو یکجا نشون بدم.
یک روش اینه که هر دو رو در دو Dataset لود کنم و در دات نت DataSet ها رو Merge کنم.
اما من میخام اینکار رو تو اوراکل انجام بدم.
راه حلی سراغ دارین؟
ir_programmer
شنبه 15 دی 1386, 11:35 صبح
حتما جواب اینه:
select a1 as col1 , a2 as col2 from table1
union
select b1 as col1 , b2 as col2 from table2
اما برای Query اصلی من که همراه با Group By هست یکم گیر میده.
قوائد استفاده از Union توی Oracle چیه؟ برای Group By هم جواب میده؟
ir_programmer
شنبه 15 دی 1386, 11:44 صبح
این ساده شده Query منه:
SELECT TBLPHASE.PHASENAME, TBLBLDGN.BLDGNNAME, TBLBLDGN.ACTIVE, TBLBLDGNPROD.BLDGNPRODID, TBLPROD.PRODNAME,
TBLBLDGNPROD.PRODTYPE, TBLDAILYPRODUCTION.CURRENTDATE, TBLDAILYPRODUCTION.OPENNINGSTOCK,
TBLDAILYPRODUCTION.DAILYPRODUCTION, SUM(NVL(TBLDAILYPRODCONS.QTY, 0)) AS TOTCONSUMERQTY,
TBLDAILYPRODUCTION.CONSUMPTION, TBLDAILYPRODUCTION.PERT, TBLDAILYPRODUCTION.SALEDRUMS, TBLDAILYPRODUCTION.SALETANKER,
TBLDAILYPRODUCTION.CLOSINGSTOCK, 0 AS RECIEVEDQTY
FROM TBLDAILYPRODCONS INNER JOIN
TBLPROVCONS ON TBLDAILYPRODCONS.PROVCONSID = TBLPROVCONS.PROVCONSID RIGHT OUTER JOIN
TBLBLDGN INNER JOIN
TBLBLDGNPROD ON TBLBLDGN.BLDGNID = TBLBLDGNPROD.BLDGNID INNER JOIN
TBLPROD ON TBLBLDGNPROD.PRODID = TBLPROD.PRODID INNER JOIN
TBLPHASE ON TBLBLDGN.PHASEID = TBLPHASE.PHASEID LEFT OUTER JOIN
TBLDAILYPRODUCTION ON TBLBLDGNPROD.BLDGNPRODID = TBLDAILYPRODUCTION.BLDGNPRODID ON
TBLPROVCONS.PROVIDERID = TBLBLDGNPROD.BLDGNPRODID AND TBLPROVCONS.CONSUMERID = TBLBLDGNPROD.BLDGNPRODID
GROUP BY TBLPROD.PRODNAME, TBLBLDGNPROD.PRODTYPE, TBLDAILYPRODUCTION.CURRENTDATE, TBLDAILYPRODUCTION.OPENNINGSTOCK,
TBLBLDGN.BLDGNNAME, TBLBLDGN.ACTIVE, TBLPHASE.PHASENAME, TBLDAILYPRODUCTION.DAILYPRODUCTION,
TBLBLDGNPROD.BLDGNPRODID, TBLDAILYPRODUCTION.CONSUMPTION, TBLDAILYPRODUCTION.PERT, TBLDAILYPRODUCTION.SALEDRUMS,
TBLDAILYPRODUCTION.SALETANKER, TBLDAILYPRODUCTION.CLOSINGSTOCK
union
SELECT TBLPHASE.PHASENAME, TBLBLDGN.BLDGNNAME, TBLBLDGN.ACTIVE, TBLBLDGNPROD.BLDGNPRODID, TBLPROD.PRODNAME,
TBLBLDGNPROD.PRODTYPE, TBLDAILYFEED.CURRENTDATE, TBLDAILYFEED.OPENNINGSTOCK, TBLDAILYFEED.RECIEVEDQTY,
TBLDAILYFEED.CONSUMPTION, TBLDAILYFEED.CLOSINGSTOCK, TBLDAILYFEED.COMMENTS, TBLDAILYFEED.PERT, 0 AS DAILYPRODUCTION,
0 AS TOTCONSUMERQTY, 0 AS SALETANKER, 0 AS SALEDRUMS
FROM TBLDAILYFEED RIGHT OUTER JOIN
TBLBLDGN INNER JOIN
TBLBLDGNPROD ON TBLBLDGN.BLDGNID = TBLBLDGNPROD.BLDGNID INNER JOIN
TBLPROD ON TBLBLDGNPROD.PRODID = TBLPROD.PRODID INNER JOIN
TBLPHASE ON TBLBLDGN.PHASEID = TBLPHASE.PHASEID ON TBLDAILYFEED.BLDGNPRODID = TBLBLDGNPROD.BLDGNPRODID
GROUP BY TBLPROD.PRODNAME, TBLBLDGNPROD.PRODTYPE, TBLBLDGN.BLDGNNAME, TBLBLDGN.ACTIVE, TBLPHASE.PHASENAME,
TBLBLDGNPROD.BLDGNPRODID, TBLDAILYFEED.CURRENTDATE, TBLDAILYFEED.OPENNINGSTOCK, TBLDAILYFEED.RECIEVEDQTY,
TBLDAILYFEED.CONSUMPTION, TBLDAILYFEED.CLOSINGSTOCK, TBLDAILYFEED.COMMENTS, TBLDAILYFEED.PERT
کسی میدونه مشکلش چیه؟
ir_programmer
شنبه 15 دی 1386, 11:59 صبح
ظاهرا Union به ترتیب ستون ها حساسه.
hmm
یک شنبه 16 دی 1386, 07:57 صبح
1-دقیقاً نام و ترتیب فیلدهای دو Query و حتی Datatype اونها میبایست یکی باشه.
2-مشکلت حل شد یا نه ؟
3-اگه حل نشد پیغام خطا رو بنویس.
ir_programmer
یک شنبه 16 دی 1386, 10:06 صبح
-------------------
حل شده
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.