2017-08-31 81 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的缩写形式加入,让你必须避免这种符号而据我所知,这是不推荐使用的符号