2017-08-31 121 views
0

有人可以解釋,用多個別名連接多個表?SQL使用別名連接多個表

我無法讓代碼工作......不停的給我提供「無法綁定」的錯誤,這個錯誤信息是針對以下內容的:M.ZipCode,C.Member_ID,F.Navn,F.Navn (最後一個)。 我對SQL還很陌生,我知道我已經搞亂了Zipcode的名字。 澄清我有一個表,稱爲Zipcode,持有Zipcodes,成員需要在成員表中的zipcode。

SELECT 
    m.Fornavn, 
    m.Efternavn, 
    m.Zipcode, 
    z.City, 
    c.Model, 
    c.Producent, 
    s.Navn, 
    s.Antal, 
    s.Pris 
FROM Members M, Fabricator F, Cars C, Storage S, ZipCode Z 
    INNER JOIN Members ON Z.Zipcode = M.ZipCode AND C.Member_ID = Members.ID 
    INNER JOIN Cars ON F.Navn = Cars.Producent 
    INNER JOIN Storage ON F.Navn = Storage.Producent; 
+0

*從不*在'FROM'子句中使用逗號。 *總是*使用正確的,明確的'JOIN'語法。 –

+0

您正在爲相同的聯合使用SQL'89和SQL'92語法。您可以使用顯式連接(首選),也可以不使用JOIN,並在WHERE子句中設置聯合條件。 –

回答

1

你似乎想以下FROM條款:

FROM ZipCode z INNER JOIN 
    Members m 
    ON z.Zipcode = m.ZipCode INNER JOIN 
    Cars c 
    ON c.Member_ID = m.ID INNER JOIN 
    Fabricator f 
    ON f.Navn = c.Producent INNER JOIN 
    Storage s 
    ON f.Navn = s.Producent 

FROM子句中的逗號表示CROSS JOIN - 笛卡爾乘積。你有多次提到的相同表格。最簡單的方法是學習使用正確的語法。

2

你大概的意思

SELECT 
m.Fornavn, 
m.Efternavn, 
m.Zipcode, 
z.City, 
c.Model, 
c.Producent, 
s.Navn, 
s.Antal, 
s.Pris 
FROM Fabricator F 
INNER JOIN Cars C ON F.Navn = C.Producent 
INNER JOIN Members M ON C.Member_ID = M.ID 
INNER JOIN ZipCode Z ON Z.Zipcode = M.ZipCode 
INNER JOIN Storage S ON F.Navn = S.Producent 
0

議員男,加工廠樓汽車C,儲存器S,郵編ž

是CROSS的縮寫形式加入,讓你必須避免這種符號而據我所知,這是不推薦使用的符號