我想要加入四个表并一起显示输出。我不确定语法对Oracle SQL Developer的作用。我知道对于程序员来说这是一个简单的问题,我希望有人可以就代码的外观提出建议。
表格是:
JNL1
JNL2
JNL3
JNL4
所有这四个表之间共同的关键是ItemID
。
查询怎么样?感谢
答案 0 :(得分:4)
这实际上取决于您想要的连接类型(外部或非外部),但您可以使用默认的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
答案 1 :(得分: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
当您想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(+)
答案 2 :(得分:0)
如果要从 all 表中输出行,并且每个表中的列相同,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
类似,但会省略所有值都重复的行。