我想使特定順序的JOIN的(A加入B)加入(C加入d)
SELECT *
FROM (lives_in as t1 NATURAL JOIN preferences p1) l1
JOIN (lives_in t2 NATURAL JOIN preferences p2) l2
ON l1.dormid = l2.dormid
返回一個錯誤。
任何人都可以幫忙嗎?非常感謝!
我想使特定順序的JOIN的(A加入B)加入(C加入d)
SELECT *
FROM (lives_in as t1 NATURAL JOIN preferences p1) l1
JOIN (lives_in t2 NATURAL JOIN preferences p2) l2
ON l1.dormid = l2.dormid
返回一個錯誤。
任何人都可以幫忙嗎?非常感謝!
你的別名查詢缺少SELECT
條款,所以試試這個:
SELECT *
FROM (
select * -- added this
FROM lives_in as t1
NATURAL JOIN preferences p1) l1
JOIN (
select * -- added this
FROM lives_in t2
NATURAL JOIN preferences p2) l2
ON l1.dormid = l2.dormid
感謝它的工作! – BersaKAIN
連接順序對結果無關緊要。你可能想要這樣的事情:
SELECT *
FROM lives_in t1
NATURAL JOIN preferences p1 ON p1.some_id = t1.id
NATURAL JOIN preferences p2 ON p2.some_id = t1.id
此外,大多數人稱它爲INNER JOIN,而不是NATURAL JOIN,順便說一句。
順便說一句,我不知道preference和lives_in表是如何相關的(我的假設是通過'some_id'共同的),但是你需要定義這種關係,否則JOIN是沒有意義的。 –
自然連接是內部連接,但連接條件的隱含*是通過匹配所有相似名稱的列來實現的。基本上是一個等待發生的bug。 – Bohemian
希望它會很有幫助。
SELECT *
FROM (
select * from lives_in as t1 NATURAL JOIN preferences p1
) l1
JOIN (
select * from lives_in t2 NATURAL JOIN preferences p2
) l2
ON l1.dormid = l2.dormid
什麼是錯誤? –
請把你的表格創建表格語法。 –