T-Sql Yardım ( Order By )
-
Selam arkadaşlar bi sql sorgum var tablodaki kayıtlara IN komutu ile birden fazla değer çekiyorum. Şu alttaki sorgu çalışırken kendi kendine id numaralarına order by asc yapıyor. Ben istiyorum ki nasıl yazılmışsa öyle çıksın sıralı olarak order by yapmasın
select * from Sembol where SembolID in(79,67,74,78,69,0)
-
cemnet bunu yazdı
select * from Sembol where SembolID in(79,67,74,78,69,0)
select * from Sembol where SembolID in(79,67,74,78,69,0) ORDER BY FIELD (id, 79, 67, 74, 78, 69, 0);
-
hoca emin misin bundan?
-
cemnet bunu yazdı
hoca emin misin bundan?
Yes, ref linkini yazmayi unutmusum. Simdi teldeyim bulabilirsem koyarim. Id yerine sembolid olcak
Sorunu dogru anladiysam cevabinda burda:
http://stackoverflow.com/questions/8055138/mysql-sort-order-by-array-value
ozgunlu tarafından 02/Şub/16 17:45 tarihinde düzenlenmiştir -
ozgunlu bunu yazdıcemnet bunu yazdı
hoca emin misin bundan?
Yes, ref linkini yazmayi unutmusum. Simdi teldeyim bulabilirsem koyarim. Id yerine sembolid olcak
Sorunu dogru anladiysam cevabinda burda:
http://stackoverflow.com/questions/8055138/mysql-sort-order-by-array-value
T-SQL SQL Server'da kullanılan SQL türevidir. Her ne kadar soruda T-SQL'e özgü bir şey yoksa da buradan konu sahibinin SQL Server kullandığını çıkarmak doğru olur, önerin MySQL için geçerli.
@cemnet kendi kendine dediğin şey açık şekilde olması gerekendir. Sonucun Where ifadesine göre sıralanması ancak bug olur.
SQL Server veriyi (veya ilgili indeksi) sırayla tarayıp eşleşme varsa sonuca ekler, bu yüzden varsayılan sıralamaya göre sonuç alırsın.
İstediğin gibi olması için şöyle tatsız bir sorgu yazman gerekli.
Select * from Sembol where SembolID in(79,67,74,78,69,0)
Order By Case
When SembolID = 79 Then 0
When SembolID = 67 Then 1
When SembolID = 74 Then 2
When SembolID = 78 Then 3
When SembolID = 69 Then 4
When SembolID = 0 Then 5
End Asc -
@buzukatak hocam bu sorgu çalıştı ama gerçekten çok tatsız :) MSSQL ile çalışıyorum @ozgunlu hocam o yüzden çalışmadı senin gönderdiğin link bende
Bi çözüm vardır herhalde
-
select * from daki yıldızı kaldırıp kolon adlarını yazsan ve id yi yazmazsan bak bakalım neye göre sıralıyor
-
yok hocam değişen bişey olmadı.
Ben sorunumu rank sutunu ekleyerek çözdüm ama yine uzun yol oldu