2

結合して出力をまとめて表示したい 4 つのテーブルがあります。Oracle SQL Developer の構文がどのように機能するかわかりません。これはプログラマーにとって簡単な質問であることはわかっています。コードがどのように見えるかについて誰かが提案できることを望んでいました。

テーブルは次のとおりです。

JNL1
JNL2
JNL3
JNL4

これら 4 つのテーブルすべてに共通するキーはItemID.

クエリはどのようになりますか? ありがとう

4

3 に答える 3

5

必要な結合の種類 (外部かどうか) によって異なりますが、デフォルトの 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
于 2013-06-21T14:45:30.020 に答える
2

他の 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(+)
于 2013-06-21T14:45:48.803 に答える
0

すべてのテーブルから行を出力したい場合、および列が各テーブルで同じである場合は機能し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いますが、すべての値が重複している行は省略されます。

于 2013-06-21T14:45:23.387 に答える