2012-02-27 27 views
6

Kayıtlarımı, alanların birleşiminden oluşan "durumları" na göre sıralamamız gereken bir durumum var.MySQL sipariş çoklu vaka deyimleriyle

 |  Sent  Received   Approved 
-------------------------------------------------- 
record1 |  null  null    null 
record2 | 2012-01-01  null    null 
record3 | 2012-01-01 2012-01-01   null 
record4 | 2012-01-01 2012-01-01  2012-01-01 

ben onların genel "statü" ile bu kayıtları sipariş MySQL sorgusu oluşturacak Nasıl: İşte bir örnek bu artan sırada durumuna göre sıralanmış sonuçlar dönmelidir nasıl?

+0

nasıl "durum" hesaplanır? – Maciej

+0

"status", gönderilen, alınan ve onaylanan birleşimdir. Bu yüzden, gönderilen yerlerin null olması gerektiği gibi, öncelikle yukarıdaki örnek gibi olmalıdır. 'Bulunamadı Kolon: – Andrew

cevap

11
order by 
    case when sent is null and received is null and approved is null then 1 
     when received is null and approved is null then 2 
     when approved is null then 3 
     else 4 end 
+1

Ben bir hata alıyorum "bir sütun adı olarak select deyiminize," MyOrderCol olarak "gibi bir sütun adı verin ve siparişinizi yan tümce ile belirtin ..." MyOrderCol tarafından sipariş "gibi. CASE WHEN ile ilgili bir hata varsa, büyük olasılıkla sağladığınız örnek adlar kaynak tablodaki gerçek sütunlar olmadığından, case ifadesini select deyimine taşıyan – Andrew

+0

@ Andrew clause'' 1054 Bilinmeyen sütun 'VAKA ... SON' sipariş' Sonra "davayı eklersiniz, dosyamın deyimi ile sipariş etmek deneyin ne zaman – DRapp

+0

diğer ad sütun adlarını, sorunu gidermek için görünüyordu. – Andrew