所以我有一个带有列的表:
deck_id, card_name, quantity, board(irrelevent for this question)
每行都有一个我需要的牌组 ID、一个牌名和上述牌的数量。
它看起来像这样:
101, "cardofblahblah", 3, "main"
101, "differentcard", 2, "main"
102, "cardofblahblah", 1, "main"
102, "fictionalcard", 3, "main"
102, "madeupcard", 4, "main"
103, "magicalcard", 2, "main"
103, "trickcard", 3, "main"
...
...
这就是我的数据库的样子。我需要的是一个选择查询,它将返回包含我指定的所有卡片的卡片组的卡片组 ID,例如:我需要一个卡片组,其中包含 1 个“madeupcard”副本和 3 个“cardofblahblah”副本。那是我真正需要做的,但如果有人也提到我可以做 > 或 < 而不仅仅是设置金额,那就太好了。
我知道如何进行查询,但是写一个像这样复杂的查询让我很难过。
感谢你们提供的任何帮助。
编辑:为了澄清,我正在寻找包含我指定的所有卡片的卡片组的卡片组 ID。例如,“哪些套牌包含 3 份 cardofblahblah 和 1 份 madeupcard?”
任何我能得到牌组 id 的输出都是好的。获取牌组 ID 是我最关心的问题。
EDIT2:在浏览了有关 SO 的各种其他主题后,我找到了解决方案。但是,我可能没有最有效的查询,所以如果有人能改进它,那就太好了。
SELECT table1.deck_id, table2.deck_id FROM decklist AS table1
JOIN (SELECT * FROM decklist WHERE card_name = "cardofblahblah" AND quantity = 3)
AS table2 ON table1.deck_id = table2.deck_id
WHERE table1.card_name = "madeupcard" AND quantity = 1;"
EDIT3:感谢 Telarian。他给了我一个更好的询问。
SELECT t.deck_id
FROM decklist t
INNER JOIN decklist l
ON l.deck_id = t.deck_id
WHERE (t.card_name = "madeupcard" AND t.quantity >= 1)
AND
(l.card_name = "cardofblahblah" AND l.quantity >= 3)