使用空值进行简单连接

时间:2013-07-27 14:58:33

标签: sql database tags

这是一个简单的,但由于某种原因,我无法破解它,我的大脑放弃了

它是关于填充一些复选框,其中一些复选框根据查找

进行检查

我有三个表:标签,项目和名为itemtags的联结表。我将'item_id'作为查询的标识符

标记

  • tag_id(pk)
  • 标签

和联结表

itemtags

  • tag_id(来自代码的fk)
  • item_id(来自项目的fk

(item_id是items表中的pk,我总是有这个值,所以这个问题没有必要)

从标签表填充复选框。

我想使用item_id作为标识符来运行查询,该标识符获取所有标记并返回它们(只有5个)并根据item_id进行检查,因此总会有5行。

因此,每个标签上返回的'item_id'有时会为空(这意味着在这种情况下是未选中的复选框)

我确定答案是盯着我,但我却看不到它

TIA

1 个答案:

答案 0 :(得分: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;

An SQLfiddle to test with