【问题标题】:simple join with null values具有空值的简单连接
【发布时间】:2013-07-27 14:58:32
【问题描述】:

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

这是关于填充一些复选框,其中一些根据查找进行检查

我有三个表:tags、items 和一个名为 itemtags 的连接表。我将“item_id”作为查询的标识符

标签

  • tag_id (pk)
  • 标签

还有一个联结表

项目标签

  • tag_id(来自标签)
  • item_id(来自项目的 fk

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

复选框是从标签表中填充的。

我想使用item_id作为标识符运行一个查询,它获取所有标签并返回它们(只有5个)并根据item_id检查它们,所以总是有5行。

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

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

tia

【问题讨论】:

  • 我不太明白,您想要列出所有标签,并有一列告诉他们是否已针对该项目进行检查?你能举一个你想要的输入/输出的例子吗?

标签: sql database tags


【解决方案1】:

这将列出所有标签,以及它们是否已针对特定项目进行检查;

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.

【讨论】:

    猜你喜欢
    • 2010-12-12
    • 2011-11-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-01
    相关资源
    最近更新 更多