結合して出力をまとめて表示したい 4 つのテーブルがあります。Oracle SQL Developer の構文がどのように機能するかわかりません。これはプログラマーにとって簡単な質問であることはわかっています。コードがどのように見えるかについて誰かが提案できることを望んでいました。
テーブルは次のとおりです。
JNL1
JNL2
JNL3
JNL4
これら 4 つのテーブルすべてに共通するキーはItemID
.
クエリはどのようになりますか? ありがとう
必要な結合の種類 (外部かどうか) によって異なりますが、デフォルトの SQL 構文を使用できます。
たとえば、JOIN
キーワードなしで参加する場合:
select * from JNL1, JNL2, JNL3, JNL4,
where
JNL1.ItemID = JNL2.ItemID AND
JNL2.ItemID = JNL3.ItemID AND
JNL3.ItemID = JNL4.ItemID;
INNER JOINS
さらに、複数の例を利用できます
SELECT whatever
FROM JNL1 AS a
INNER
JOIN JNL2 AS b
ON b.ItemID = a.ItemID
INNER
JOIN JNL2 AS c
ON c.ItemID = b.ItemID
INNER
JOIN JNL2 AS d
ON d.ItemID = c.ItemID
他の DB エンジンと同様に、Oracle でも動作します。
SELECT *
FROM JNL1 j1
INNER JOIN JNL2 j2 ON j1.ItemID = j2.ItemID
INNER JOIN JNL3 j3 ON j1.ItemID = j3.ItemID
INNER JOIN JNL4 j4 ON j1.ItemID = j4.ItemID
次のような場合に、典型的な Oracle 構文が 1 つありますLEFT JOIN
。
標準 SQL:
SELECT *
FROM JNL1 j1
LEFT JOIN JNL2 j2 ON j1.ItemID = j2.ItemID
LEFT JOIN JNL3 j3 ON j1.ItemID = j3.ItemID
LEFT JOIN JNL4 j4 ON j1.ItemID = j4.ItemID
は、次の Oracle 構文と同等です。
SELECT *
FROM JNL1 j1,
JNL2 j2,
JNL3 j3,
JNL4 j4,
WHERE j1.ItemID=j2.ItemID(+)
AND j1.ItemID=j3.ItemID(+)
AND j1.ItemID=j4.ItemID(+)
すべてのテーブルから行を出力したい場合、および列が各テーブルで同じである場合は機能しUNION ALL
ます。これはJOIN
データベースの意味ではありませんが、英語の意味であることに注意してください。
SELECT * FROM JNL1
UNION ALL SELECT * FROM JNL2
UNION ALL SELECT * FROM JNL3
UNION ALL SELECT * FROM JNL4
ORDER BY
必要に応じて末尾にを追加できます。
UNION
に似てUNION ALL
いますが、すべての値が重複している行は省略されます。