使用多个表连接

时间:2013-03-25 18:56:29

标签: sql inner-join alias

真的在这里挣扎,并不完全明白发生了什么。使用MS SQL Server 2012。

如果我要运行此代码:

USE database 1;
GO

SELECT a.ID, b.ID, c.ID, d.ID
FROM table1 a, table2 b, table3 c, table3 d
INNER JOIN database2.tablex tx ON a.ID = tx.ID 

由于某种原因,它不会工作。 Intellisense只显示列表中的最后一个别名,因此" d"。如果我把剩下的代码写出来,那么syxx xxxx列就无法绑定......我怎么能这样做?我想从多个表中进行选择,然后为所有表应用内部联接(构建DW)。

由于

1 个答案:

答案 0 :(得分:4)

不要混用两种类型的连接 - 旧连接(WHERE中的连接条件)和新连接(使用JOIN关键字)。您的查询无效,因为FROM只显示JOIN中的最新表格:

--Doesn't work 
SELECT a.ID, b.ID, c.ID, d.ID
FROM table1 a, table2 b, table3 c, table3 d
INNER JOIN database2.tablex tx ON a.ID = tx.ID 

--Works (note - table1 a is the last in "FROM"):
SELECT a.ID, b.ID, c.ID, d.ID
FROM  table2 b, table3 c, table3 d, table1 a 
INNER JOIN database2.tablex tx ON a.ID = tx.ID ;

-- Preferred way :
SELECT a.ID, b.ID, c.ID, d.ID
FROM  table1 a  
INNER JOIN table2 b ON (...)
INNER JOIN table3 c ON (...) 
INNER JOIN table3 d ON (...)
INNER JOIN database2.tablex tx ON a.ID = tx.ID