0

私は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 (およびいくつかの追加タグ) を持つものを選択したい

4

2 に答える 2

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);
于 2012-10-09T16:18:47.613 に答える
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はタグの数です

于 2012-10-09T16:22:45.433 に答える