だから私は列を持つテーブルを持っています:
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を返すselectクエリです。たとえば、「madeupcard」のコピー1つと「cardofblahblah」のコピー3つを含むデッキが必要です。それは私が本当にする必要があることですが、誰かが単に量を設定するだけでなく、私が>または<を行う方法についても言及してくれるといいでしょう。
クエリの実行方法は知っていますが、このような複雑なクエリを作成すると困惑します。
皆さんが提供できる助けをありがとう。」
編集:明確にするために、私は指定したすべてのカードを含むデッキのデッキIDを探しています。たとえば、「どのデッキにcardofblahblahの3つのコピーとmadeupcardの1つのコピーが含まれていますか?」
デッキ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)