0

真的在这里挣扎,不太明白发生了什么。使用 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”。如果我将其余代码写出来,则无法绑定 xxxx 列...我该怎么做?我想从多个表中进行选择,然后为所有这些表应用内连接(构建 DW)。

谢谢

4

1 回答 1

4

不要混合 2 种连接样式 - 旧的(连接条件 in 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 
于 2013-03-25T19:01:46.293 回答