0

私はその形式でいくつかのデータを含むデータベースを持っています:

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')

ご覧のとおり、名前フィールドは一意ではありません。同じ名前のアイコンを複数持つことができ、それらはサイズ フィールドで区切られています。PHPには、たとえば次のような1つのアイコンセットを取得するクエリがあります。

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

この例では、$tag に 'twitter' が含まれている場合、タグ 'twitter' を持つ最初の SQL データ エントリのみが表示されるため、次のようになります。

(myicon.png, 16, 'twitter')

これは私が望んでいるものですが、デフォルトでは「128」サイズを好みます。存在する場合は128サイズのみを送信し、別のサイズでない場合はSQLに送信するように指示することは可能ですか?

ありがとう !

4

2 に答える 2

1

優先値を一番上に配置するための追加の列が必要です。たとえば、次のようなことができます。

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

新しいorder by句は、優先サイズを最初に配置し (1 を割り当てる唯一のサイズであるため)、残りを実際のサイズで最大のものから順に並べます。

于 2010-05-26T01:58:48.787 に答える
0

ORDER BY size DESC?

于 2010-05-26T01:58:03.157 に答える