次のようなシナリオがある:私はこの2つのテーブルを持っている:結合が複数の行に一致する場合、1つの表から行を選択するにはどうすればよいですか?
(TABLE1)
SUPER_ID| NAME |
-------+--
1 | BOB |
(TABLE2)
ID| SUPER_ID |
-------+----+
1 | 1 |
2 | 1 |
3 | 1 |
私は
`SELECT a.super_id, a.name
FROM TABLE1 a LEFT OUTER JOIN TABLE2 b ON a.super_id = b.super_id
WHERE a.super_id = 1`
ように、これらの2つのテーブルを結合した場合、結果は私が選択することができますどのように
SUPER_ID| NAME |
-------+--------
1 | BOB |
1 | BOB |
1 | BOB |
になりますGROUP BYを使用せずにTABLE1からの行のみ?おかげ
UPDATE:オクラホマので、私は3番目のテーブルを持っている...
(TABLE3)
ID| TYPE |
-------+----+
1 | A |
2 | B |
3 | C |
私はTABLE2 ASに参加する必要があります。
SELECT a.super_id, a.name
FROM TABLE1 a INNER JOIN
TABLE2 b ON a.super_id = b.super_id INNER JOIN
TABLE3 c ON b.id = c.id
WHERE a.super_id = 1
TABLE2とTABLE3の関係は何ですか? 1:M? N:M?そのためにいくつかのデータを投稿してください。将来的には、あなたの質問を最小限で完全な形にしてください。細部と繰り返しの繰返し抽出は、みんなの時間を無駄にするだけです。 – APC
あなたが3つのテーブルに参加したいので、参加を理解するために数分を要します:https://blog.codinghorror.com/a-visual-explanation-of-sql-joins/あなたの期待することは何ですか?結果セットの外観は? – xQbert
あなたのお返事ありがとうございます@xQber;私はFROM句でサブクエリを使って自分の要求を達成することができます。 @Charles Bretanaによって提案されているように。 TABLE2に複数の一致があってもTAABLE1に基づいて結果セットを制限しようとしていました –