2012-07-20 82 views
0

这些都是我的表:记录有一个关系到特定的其他记录

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

所以标签具有M:N的关系的项目。

我想获得所有标签的列表,其中包含一个额外的布尔列,这个布尔列是即时创建的,并且为每个标签保存布尔值,该标签是否与我指定或不指定的项目id有关系。

所以期望的结果是:

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

可能是什么这个用mysql查询?

干杯

塞巴斯蒂安

回答

0

使用外连接到变量表涉及tagitems表,包括相关ITEM_ID你ON子句中指定。

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 
+0

谢谢你,这正是我所期待的。 – 2012-07-21 07:53:24

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 
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 ] 
相关问题