我有四個表想要加入並一起顯示輸出。我不確定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 –