0

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

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

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

标签

  • tag_id (pk)
  • 标签

和一个接线表

物品标签

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

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

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

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

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

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

蒂亚

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 回答