在Oracle SQL Developer中加入表

时间:2013-06-21 14:41:59

标签: sql oracle join

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

表格是:

JNL1
JNL2
JNL3
JNL4

所有这四个表之间共同的关键是ItemID

查询怎么样?感谢

3 个答案:

答案 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

时,存在一种典型的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(+)

答案 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

UNIONUNION ALL类似,但会省略所有值都重复的行。