私はテーブルを持っています
a (id INT, name VARCHAR(100))
b (id INT, name VARCHAR(100))
a_b (a INT, b INT)
a.name が 'bob' に等しいすべての b を取得するクエリを作成しますが、a.name で見つかった b.id と同じ b.id を持つすべての a も含めます。
例えば、
a: b: a_b:
id | name id | name a | b
_________________ _________________ _________
1 | 'bob' 1 | 'dark' 1 | 1
2 | 'tony' 2 | 'light' 1 | 2
3 | 'steve' 3 | 'neg' 2 | 1
4 | 'elon' 4 | 'elon' 3 | 1
したがって、a.name = 'bob' のすべての b が必要です。
SELECT * FROM a_b
JOIN a ON a.id = a_b.a
JOIN b ON b.id = a_b.b
WHERE a.name = 'bob'
これは、b.id = 1 および 2 の場合の行を取得しますが、b.id が同じ場合のすべての a.names も必要です。理想は返してほしい
a's 1,2,3. b:1
a's 1 b: 2
したがって、a の name 属性の少なくとも 1 つが 'bob' に等しいすべての b は、SQL でこれを行う方法はありますか、またはすべての行を取得してプログラミング言語でフィルタリング操作を行う必要がありますか?