我有3张桌子:
t_cards:
----------------------------
| card_id | customer_name |
----------------------------
t_cardsxtags:
-------------------------
| ID | card_id | tag_id |
-------------------------
t_tags:
---------------------
| tag_id | tag_name |
---------------------
卡和标签之间的关系是m:n,因此卡可以有多个标签,标签可以属于多个卡。
现在我的问题如下:
我想从t_cards中选择那些具有某些标签(或更多)的记录,例如带有tag_ids 33,44和55的标签。
所以我希望所有这些卡片都包含在选择中:
我如何使用mysql做到这一点?
的 [编辑]
更具体一点:我想要那些选择的,有标签33,44和55(可能还有一些额外的标签)
答案 0 :(得分:0)
这是你在找什么?
SELECT * FROM t_cards c INNER JOIN t_cardsxtags ct ON c.card_id = ct.card_id WHERE ct.tag_id IN (33,44,55);
答案 1 :(得分:0)
你是说这个?
SELECT
t1.*
FROM
t_cards t1
INNER JOIN t_cardsxtags t2 ON t2.card_id=t1.card_id
WHERE t2.tag_id IN (33,44,55)
GROUP BY t1.card_id
HAVING (COUNT(t2.tag_id) == 3)
3
是标签数量