0

これは簡単なことですが、なぜか解読できず、私の脳はあきらめました

ルックアップに従っていくつかのチェックボックスをオンにして、いくつかのチェックボックスを設定することです

タグ、アイテム、および itemtags と呼ばれるジャンクション テーブルの 3 つのテーブルがあります。クエリの識別子として「item_id」を持っています

タグ

  • tag_id (pk)
  • 鬼ごっこ

とジャンクションテーブル

アイテムタグ

  • tag_id (タグからの fk)
  • item_id (アイテムからの fk

(item_id は items テーブルの pk であり、私は常にこの値を持っているため、この質問には必要ありません)

チェックボックスは、タグ テーブルから取り込まれます。

item_id を識別子として使用してクエリを実行したいのですが、これはすべてのタグを取得して返し (5 つしかありません)、item_id に従ってチェックするため、常に 5 行になります。

したがって、各タグで返される「item_id」は null になることがあります (この場合、チェックボックスがオフになっていることを意味します)。

答えが目の前にあるのは確かだけど、見えないだけ

ティア

4

1 に答える 1

0

これにより、すべてのタグと、特定のアイテムに対してチェックされているかどうかが一覧表示されます。

SELECT *, CASE WHEN item_id IS NULL then 0 ELSE 1 END checked_for_item_1
FROM tags
LEFT JOIN itemtags
  ON tags.tag_id = itemtags.tag_id
 AND item_id = 1 
ORDER BY tags.tag_id;

でテストする SQLfiddle

于 2013-07-27T15:12:01.480 に答える