所以我有一个包含列的表:
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份makeupcard?”
我能获得套牌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)
答案 0 :(得分:2)
这似乎过于复杂......
以下查询不会为您提供所需内容吗?
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)
答案 1 :(得分:0)
尝试以下代码
SELECT *
FROM myTable
WHERE ((board='madeupcard' AND quantity=1) OR (board='cardofblahblah' AND quantity=3))
如果这是你想要的,请告诉我......