SQL grup tarafından belirli bir girdiyi alın

2 Cevap php

Ben bu formda bazı bilgileri içeren bir veritabanı var:

icon(name, size, tag)
(myicon.png, 16, 'twitter')
(myicon.png, 32, 'twitter')
(myicon.png, 128, 'twitter')
(myicon.png, 256, 'twitter')
(anothericon.png, 32, 'facebook')
(anothericon.png, 128, 'facebook')
(anothericon.png, 256, 'facebook')

Yani gördüğünüz gibi, ad alanı ben aynı ada sahip birden simgeler olabilir ve onlar büyüklük alanı ile ayrılır uniq değildir. Şimdi PHP Örneğin ben ONE simge seti, olsun bir sorgu var:

mysql_query("SELECT * FROM icon WHERE tag='".$tag."' ORDER BY size LIMIT 0, 10");

$ Tag 'twitter' içeren bu örnekle etiketi 'twitter' ile SADECE ilk SQL veri girişi gösterir, bu yüzden olacak:

(myicon.png, 16, 'twitter')

Bu ne istiyorum, ama varsayılan olarak '128 'boyutunu tercih ederim. Bu başka bir boyutu ise, mevcut ve ne zaman bana sadece 128 boyutunu göndermek için SQL söylemek mümkün mü?

Teşekkürler!

2 Cevap

O üstündeki tercih değerini koyar tarafından sipariş için ek bir sütun gerekir. Örneğin, böyle bir şey yapabilirsiniz:

SELECT
  * 
FROM
  icon 
WHERE 
  tag='whatever' 
ORDER BY
  case size when 128 then 1 else 0 end desc,
  size desc
LIMIT 0, 10

Yeni order by fıkra en büyük ilk, (bunun için bir 1 atar tek beri) ilk tercih edilen boyutunu koyar ve daha sonra da gerçek boyutunda onlardan kalan emreder.

ORDER BY size DESC?