我有四个表想要加入并一起显示输出。我不确定Oracle SQL Developer的语法是如何工作的。我知道对于程序员来说这是一个简单的问题,我希望有人能够就代码的外观提出建议。在Oracle SQL Developer中加入表格
的表是:
JNL1
JNL2
JNL3
JNL4
是共同之间的这些表的所有四是ItemID
的关键。
查询将如何?谢谢
我有四个表想要加入并一起显示输出。我不确定Oracle SQL Developer的语法是如何工作的。我知道对于程序员来说这是一个简单的问题,我希望有人能够就代码的外观提出建议。在Oracle SQL Developer中加入表格
的表是:
JNL1
JNL2
JNL3
JNL4
是共同之间的这些表的所有四是ItemID
的关键。
查询将如何?谢谢
这实际上取决于你想要的连接类型(外部还是不是),但是你可以使用默认的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
谢谢,这个作品完美。 –
如果要输出来自的所有表中的行,并且如果每个表中的列相同,则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
类似,但它将省略所有值都重复的行。
当我运行该命令时,它给了我这个错误:所有查询使用UNION,INTERSECT或EXCEPT运算符组合在目标列表中必须具有相同数量的表达式 –
好的,这基本上意味着我误解了您的问题。我认为你可能意思是“加入”的意思是“追加” - 我猜测是因为没有表定义,我猜错了:)其他答案使用实际的数据库连接,所以他们可能是你想要的。 –
在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(+)
语法不是由工具(它是SQL Developer)而是由数据库系统(它是Oracle)确定的。查看关于如何编写连接的Oracle手册:http://docs.oracle.com/cd/E11882_01/server.112/e26088/queries006.htm#i2054012 –