Forum

SqlServer 2000 ile ...
 
Bildirimler
Hepsini Temizle

SqlServer 2000 ile union yaparken sıralı yapmak

5 Yazılar
2 Üyeler
0 Likes
562 Görüntüleme
(@AliRizaCanakci)
Gönderiler: 11
Eminent Member
Konu başlatıcı
 

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.plin2


FROM MAXIMO.dbo.seservice seservice


GROUP BY seservice.polinenum, seservice.ponum, seservice.itemnum, seservice.description, seservice.storeloc, seservice.orderqty, seservice.orderunit, seservice.unitcost,seservice.isletmetoplami,seservice.plin1,seservice.plin2


HAVING (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.plin2


FROM MAXIMO.dbo.seproduct seproduct


GROUP BY seproduct.polinenum, seproduct.ponum, seproduct.itemnum, seproduct.description, seproduct.storeloc, seproduct.orderqty, seproduct.orderunit, seproduct.unitcost,seproduct.isletmetoplami,seproduct.plin1,seproduct.plin2


HAVING (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.plin2


FROM MAXIMO.dbo.sestok sestok


GROUP BY sestok.polinenum, sestok.ponum, sestok.itemnum, sestok.description, sestok.storeloc, sestok.orderqty, sestok.orderunit, sestok.unitcost, sestok.isletmetoplami, sestok.plin1, sestok.plin2


HAVING (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.


 


 


 

 
Gönderildi : 15/12/2009 12:59

(@haticeakgul)
Gönderiler: 983
Noble Member
 

Merhaba;


Sqlin tamamini üst bir selecte almalısınız bu parantezin sonunda order ver.


iyi çalışmalar.

 
Gönderildi : 15/12/2009 14:53

(@AliRizaCanakci)
Gönderiler: 11
Eminent Member
Konu başlatıcı
 

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 seservice


GROUP BY seservice.polinenum, seservice.ponum, seservice.itemnum, seservice.description, seservice.storeloc, seservice.orderqty, seservice.orderunit, seservice.unitcost,seservice.isletmetoplami,seservice.plin1,seservice.plin2


HAVING (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.plin2


FROM MAXIMO.dbo.seproduct seproduct


GROUP BY seproduct.polinenum, seproduct.ponum, seproduct.itemnum, seproduct.description, seproduct.storeloc, seproduct.orderqty, seproduct.orderunit, seproduct.unitcost,seproduct.isletmetoplami,seproduct.plin1,seproduct.plin2


HAVING (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.plin2


FROM MAXIMO.dbo.sestok sestok


GROUP BY sestok.polinenum, sestok.ponum, sestok.itemnum, sestok.description, sestok.storeloc, sestok.orderqty, sestok.orderunit, sestok.unitcost, sestok.isletmetoplami, sestok.plin1, sestok.plin2


HAVING (sestok.ponum=@satinalmano2))AS T ) ORDER by polinenum )

 
Gönderildi : 15/12/2009 15:16

(@haticeakgul)
Gönderiler: 983
Noble Member
 

   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.sAciklama


FROM tbStok WHERE nStokTipi =1


Union all


SELECT tbStok.sKodu ,tbStok.sAciklama


FROM tbStok WHERE nStokTipi =1


 


) as a


Order by sKodu

 
Gönderildi : 15/12/2009 17:22

(@AliRizaCanakci)
Gönderiler: 11
Eminent Member
Konu başlatıcı
 

Hatice 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..


 

 
Gönderildi : 15/12/2009 18:16

Paylaş: