我有3个表,例如
表card
:
card_id | card_name
--------------------
1 | card-1
2 | card-2
3 | card-3
表deck
:
deck_id | deck_name
---------------------
1 | deck-1
2 | deck-2
3 | deck-3
表deck_meta
:
meta_id | deck_id | card_id
----------------------------
1 | 2 | 1
2 | 2 | 3
3 | 1 | 1
4 | 1 | 2
5 | 2 | 2
现在,我正在尝试从表card
中选择表deck_id=2
中deck_meta
的所有卡片。
到目前为止,我理解它需要一些关系知识来创建这样的Select
查询,所以我读了一对一,一对多和多对多的关系,但无论如何查询我制作,要么丢错,要么没有给出所需的输出。
由于我无法弄清楚还有什么要寻找,我无法在SO上搜索类似的问题。
答案 0 :(得分:2)
您应该将deck_meta
加入card
列的card_id
表,然后选择deck_id = 2
所在的行。
SELECT *
FROM deck_meta AS dm
INNER JOIN card AS c ON dm.card_id = c.card_id
WHERE deck_id = 2;
请参阅 DEMO 。
如果您只需要card_name
,请将SELECT *
替换为SELECT c.card_id, c.card_name
。
答案 1 :(得分:1)
你可以试试这个
SELECT * FROM `card` WHERE `card_id` IN (SELECT `card_id` FROM `deck_meta` WHERE `deck_id`=2)
它应该为card
card_id
中的行提供deck_meta
属于deck_id
中"strict": "true"
= 2行的行。