Forum
Merhaba arkadaşlar;
Sqlserver'da union ile ilişkili olmayan tabloları aşağıdaki şekilde birleştiriyorum.
SELECT TOP
100 PERCENT seservice.polinenum, seservice.ponum, seservice.itemnum, seservice.description, seservice.storeloc, seservice.orderqty, seservice.orderunit, seservice.unitcost,seservice.isletmetoplami,seservice.plin1,seservice.plin2FROM
MAXIMO.dbo.seservice seserviceGROUP BY
seservice.polinenum, seservice.ponum, seservice.itemnum, seservice.description, seservice.storeloc, seservice.orderqty, seservice.orderunit, seservice.unitcost,seservice.isletmetoplami,seservice.plin1,seservice.plin2HAVING
(seservice.ponum=@satinalmano2) UNION ALL ( SELECT TOP 100 PERCENT seproduct.polinenum, seproduct.ponum, seproduct.itemnum, seproduct.description, seproduct.storeloc, seproduct.orderqty, seproduct.orderunit, seproduct.unitcost,seproduct.isletmetoplami,seproduct.plin1,seproduct.plin2FROM
MAXIMO.dbo.seproduct seproductGROUP BY
seproduct.polinenum, seproduct.ponum, seproduct.itemnum, seproduct.description, seproduct.storeloc, seproduct.orderqty, seproduct.orderunit, seproduct.unitcost,seproduct.isletmetoplami,seproduct.plin1,seproduct.plin2HAVING
(seproduct.ponum=@satinalmano2) ) UNION ALL (SELECT TOP 100 PERCENT sestok.polinenum, sestok.ponum, sestok.itemnum, sestok.description, sestok.storeloc, sestok.orderqty, sestok.orderunit, sestok.unitcost, sestok.isletmetoplami, sestok.plin1, sestok.plin2FROM
MAXIMO.dbo.sestok sestokGROUP BY
sestok.polinenum, sestok.ponum, sestok.itemnum, sestok.description, sestok.storeloc, sestok.orderqty, sestok.orderunit, sestok.unitcost, sestok.isletmetoplami, sestok.plin1, sestok.plin2HAVING
(sestok.ponum=@satinalmano2) ORDER BY sestok.polinenum )Son sorguda polinenum fieldine göre sıralı olması için ORDER BY kullanıyorum."Incorrect syntax near the keyword ORDER hatası veriyor.
yaptığım araştırlamalarda aşağıdaki şekilde türemiş tablo üzerinde kullanım gördüm..
Buna göre denedim.. Bunda da tablo eklenemiyor diye hata alıyorum.
SELECT * FROM(
SELECT TOP 2 GrupId,UrunId,UrunAd FROM Urun
WHERE GrupId=1 ORDER BY UrunId DESC
) AS T
UNION
SELECT * FROM (
SELECT TOP 2 GrupId,UrunId,UrunAd FROM Urun
WHERE GrupId=2 ORDER BY UrunId DESC
) AS T
Aslında en sondaki sorguda kullanmam benim için yeterli.Kendi içinde sıralama yapmak istemiyorum.Tümünde sıralı olsun istiyorum.
Ne yapmam gerekir.Yardımlarınızı bekliyorum.
Merhaba;
Sqlin tamamini üst bir selecte almalısınız bu parantezin sonunda order ver.
iyi çalışmalar.
Hatice hanım yardımınız için çok teşekkürler..
Aşağıdaki şekilde mi yaptım ama aynı hatayı (incorrect system near the keyword ORDER) veriyor.
SELECT * FROM (
SELECT seservice.polinenum, seservice.ponum, seservice.itemnum, seservice.description, seservice.storeloc, seservice.orderqty, seservice.orderunit, seservice.unitcost,seservice.isletmetoplami,seservice.plin1,seservice.plin2
FROM
MAXIMO.dbo.seservice seserviceGROUP BY
seservice.polinenum, seservice.ponum, seservice.itemnum, seservice.description, seservice.storeloc, seservice.orderqty, seservice.orderunit, seservice.unitcost,seservice.isletmetoplami,seservice.plin1,seservice.plin2HAVING
(seservice.ponum=@satinalmano2) UNION ALL ( SELECT seproduct.polinenum, seproduct.ponum, seproduct.itemnum, seproduct.description, seproduct.storeloc, seproduct.orderqty, seproduct.orderunit, seproduct.unitcost,seproduct.isletmetoplami,seproduct.plin1,seproduct.plin2FROM
MAXIMO.dbo.seproduct seproductGROUP BY
seproduct.polinenum, seproduct.ponum, seproduct.itemnum, seproduct.description, seproduct.storeloc, seproduct.orderqty, seproduct.orderunit, seproduct.unitcost,seproduct.isletmetoplami,seproduct.plin1,seproduct.plin2HAVING
(seproduct.ponum=@satinalmano2) ) UNION ALL (SELECT sestok.polinenum, sestok.ponum, sestok.itemnum, sestok.description, sestok.storeloc, sestok.orderqty, sestok.orderunit, sestok.unitcost, sestok.isletmetoplami, sestok.plin1, sestok.plin2FROM
MAXIMO.dbo.sestok sestokGROUP BY
sestok.polinenum, sestok.ponum, sestok.itemnum, sestok.description, sestok.storeloc, sestok.orderqty, sestok.orderunit, sestok.unitcost, sestok.isletmetoplami, sestok.plin1, sestok.plin2HAVING
(sestok.ponum=@satinalmano2))AS T ) ORDER by polinenum )Sqlde parantezin icinde order olmayacak select * from () as a order by siralama gibi olacak onceki tum sqli parantez icine yazacaksin parantezin icinde hic order olmayacak. Unionlar arasinda order olmaz top2 niye kullaniyorsunuz anladım sqlini ordersez aldiktan sonra tumunu paranteze alip en dısa order koymalisiniz .Sizdeki tablolar bende olmadığı için ben kendim bir örnek yaptım bunu örnek olarak görüp yapabilirsiniz.
SELECT
* FROM(
SELECT
tbStok.sKodu ,tbStok.sAciklamaFROM
tbStok WHERE nStokTipi =1Union all
SELECT
tbStok.sKodu ,tbStok.sAciklamaFROM
tbStok WHERE nStokTipi =1
)
as aOrder
by sKoduHatice hanım yardımınız için çok teşekkürler..
Sorun dediğiniz gibi parantezden kaynaklanıyormuş..
Parantez dışına alarak çözdüm..