同一个表上有多个内连接

时间:2016-08-26 09:45:57

标签: sql ms-access

我有三张桌子: 表a

UID
SellID
BuyID
SAMonth

表B

ID
ZipCode

表C

Zip Code
Latitude 
Longitude 

现在我必须找到两个ID之间的距离

首先我有UID并且基于该UID我试图获得两个邮政编码对应每个ID使用以下代码。

Select t1.UID,t1.SellID,z1.ZipCode, t1.BuyID, z2.ZipCode , SAMonth 
from tableA t1
inner join tableB z1 on t1.SellID Like z1.ID 
inner join tableB z2 on t1.BuyID Like z2.ID 
where Criteria

这段代码出了什么问题,我在添加第二个内连接时遇到了语法错误。此外,如何使用此Zip获取ID&#39>的经度和纬度

由于Format的不同,它正在使用Like Keyword。添加括号后其工作。如何扩展到第3个表

3 个答案:

答案 0 :(得分:1)

你需要将其中一个连接放入parens中,例如

Select t1.UID,t1.SellID,z1.ZipCode, t1.BuyID, z2.ZipCode , SAMonth 
  from ( tableA t1
         inner join tableB z1 on t1.SellID Like z1.ID )
         inner join tableB z2 on t1.BuyID Like z2.ID 
 where Criteria

这迫使您编写的顺序仅用于解析目的,优化程序将使用它确定为最佳的顺序。

正如其他人所指出的那样,您的数据元素名称(ID)建议您将like替换为=(等于)。

添加第三个表涉及添加更多级别的parens嵌套,例如

from ( ( tableA t1
         inner join tableB z1 on t1.SellID Like z1.ID )
         inner join tableB z2 on t1.BuyID Like z2.ID )
         inner join tableC z3 on z1.ZipCode = z3.ZipCode

答案 1 :(得分:0)

like替换为=相等比较

inner join tableB z1 on t1.SellID = z1.ID 
inner join tableB z2 on t1.BuyID = z2.ID 

答案 2 :(得分:0)

Select t1.UID,t1.SellID,z1.ZipCode, t1.BuyID, z2.ZipCode , t1.SAMonth 
from tableA t1
inner join tableB z1 on t1.SellID = z1.ID 
inner join tableB z2 on t1.BuyID = z2.ID