真的在这里挣扎,并不完全明白发生了什么。使用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)。
由于
答案 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