记录与特定的其他记录有一个关系

时间:2012-07-20 14:13:53

标签: mysql sql

这些是我的表格:

------    ----------     -------
|tags| -- |tagitems|  -- |items|
------    ----------     -------

所以标签与项目有m:n的关系。

我希望得到一个包含额外布尔列的所有标签的列表,该列是动态创建的,并为每个标签保留布尔值,无论标签是否与我指定的项目ID有关系。

所以期望的结果是:

------------------------------
|tag.id | is_assigned_to_item|
------------------------------
|   1   |          true      |
|   3   |          false     |
------------------------------

使用mysql可以查询什么?

干杯

塞巴斯蒂安

3 个答案:

答案 0 :(得分:0)

select tag.tag_id, 
case when item.is_assigned_to_item is null then 'false' else 'true' end
from tag left join item on tag.tag_id=item.tag_id

答案 1 :(得分:0)

select  t.id , case when t2i.tagid is null then true else false end
from tags t lef join tagitems t2i on t.tagitemid=t2i.tagid [left join items it om it.id =  t2i.itemid ]

答案 2 :(得分:0)

使用外部联接将标记表与tagitems表相关联,包括您在ON子句中指定的相关item_id。

select tag.tag_id, 
  (count(tagitems.tag_id) > 0) as is_assigned_to_item
from tag 
  left outer join tagitems on tagitems.tag_id=tag.tag_id and tagitems.item_id = ?
group by tag.tag_id
相关问题