Oracle SQL Developer中的连接表
我有四个表,我想连接它们并一起显示输出。我不确定Oracle SQL Developer的语法是如何工作的。我知道这对于程序员来说是一个简单的问题,我希望有人能对代码的外观提出建议 表格包括:Oracle SQL Developer中的连接表,sql,oracle,join,Sql,Oracle,Join,我有四个表,我想连接它们并一起显示输出。我不确定Oracle SQL Developer的语法是如何工作的。我知道这对于程序员来说是一个简单的问题,我希望有人能对代码的外观提出建议 表格包括: JNL1 JNL2 JNL3 JNL4 这四个表之间的共同键是ItemID 查询是什么样子的?谢谢如果您想输出所有表中的行,并且如果每个表中的列都相同,UNION all将起作用。注意,这不是数据库意义上的JOIN,尽管它有点像英语意义上的JOIN: SELECT * FROM JNL1 UNION A
JNL1
JNL2
JNL3
JNL4
这四个表之间的共同键是ItemID
查询是什么样子的?谢谢如果您想输出所有表中的行,并且如果每个表中的列都相同,
UNION all
将起作用。注意,这不是数据库意义上的JOIN
,尽管它有点像英语意义上的JOIN:
SELECT * FROM JNL1
UNION ALL SELECT * FROM JNL2
UNION ALL SELECT * FROM JNL3
UNION ALL SELECT * FROM JNL4
如果需要,您可以在末尾添加一个ORDER BY
UNION
类似于UNION ALL
,但它将忽略所有值都重复的行。这实际上取决于您想要的联接类型(外部联接或非外部联接),但您可以使用默认SQL语法
例如,不使用JOIN
关键字进行连接:
select * from JNL1, JNL2, JNL3, JNL4,
where
JNL1.ItemID = JNL2.ItemID AND
JNL2.ItemID = JNL3.ItemID AND
JNL3.ItemID = JNL4.ItemID;
此外,您还可以使用多个内部联接
,例如
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
它在Oracle中工作,就像在其他DB引擎中一样:
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语法:
标准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(+)
语法不是由工具(SQL Developer)决定的,而是由数据库系统(Oracle)决定的。查看有关如何编写联接的Oracle手册:当我运行时,它给了我一个错误:使用UNION、INTERSECT或EXCEPT运算符组合的所有查询在其目标listsOK中必须具有相同数量的表达式,这基本上意味着我误解了您的问题。我想您可能是指“附加”意义上的“连接”-我猜是因为没有表定义,我猜错了:)其他答案使用实际的数据库连接,所以它们可能就是您想要的。