这些是我的表格:
------ ---------- -------
|tags| -- |tagitems| -- |items|
------ ---------- -------
所以标签与项目有m:n的关系。
我希望得到一个包含额外布尔列的所有标签的列表,该列是动态创建的,并为每个标签保留布尔值,无论标签是否与我指定的项目ID有关系。
所以期望的结果是:
------------------------------
|tag.id | is_assigned_to_item|
------------------------------
| 1 | true |
| 3 | false |
------------------------------
使用mysql可以查询什么?
干杯
塞巴斯蒂安
答案 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