さまざまなおもちゃとそれらが使用する電池の種類をリストした表があるとしましょう。
toy_id battery_id battery_qty
1 3 1
2 2 4
2 3 1
3 1 1
どのおもちゃがバッテリータイプ2と3の両方を使用するかを教えてくれるクエリを作成したいと思います(ただし、他のおもちゃも使用する可能性があります)。上記の例では、それはtoy_id2です。
そのようなクエリを作成するにはどうすればよいですか?
これが私がこれまでに持っているものですが、それは厄介なようです:
SELECT t1.toy_id,
t1.battery_id b1, t2.battery_id b2,
t1.battery_qty qty1, t2.battery_qty qty2
FROM toys t1
LEFT JOIN toys t2
ON t1.toy_id = t2.toy_id
WHERE t1.battery_id = 2
AND t2.battery_id = 3
HAVING q1 > 0
AND q2 > 0
ORDER BY toy_id ASC;
結果は正しいように見えますが、何かを逃したかどうか知りたいです。