2

我有四个表要加入并一起显示输出。我不确定 Oracle SQL Developer 的语法是如何工作的。我知道这对程序员来说是一个简单的问题,我希望有人可以就代码的外观提出建议。

这些是:

JNL1
JNL2
JNL3
JNL4

所有这四个表之间的共同键是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

它在 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 语法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 回答