0

这些是我的表:

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

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

我想获取所有标签的列表,其中包含一个额外的布尔列,该列是动态创建的,并为每个标签保存布尔值,无论标签与我指定的项目 id 是否相关。

所以想要的结果是:

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

使用 mysql 可以查询什么?

干杯

塞巴斯蒂安

4

3 回答 3

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
于 2012-07-20T14:18:16.070 回答
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 ]
于 2012-07-20T14:21:57.360 回答
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
于 2012-07-20T14:23:20.393 回答