Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用内部联接从多个表进行SQL查询_Sql_Sql Server - Fatal编程技术网

使用内部联接从多个表进行SQL查询

使用内部联接从多个表进行SQL查询,sql,sql-server,Sql,Sql Server,我有一个名为INVOICE的表,从中可以获得ADDRESSID ID CODE VALUE 1 BB BlindFold 2 BC Bucharest 我有另一个名为Address的表 ADDRESSID ADDRESS 2 BB 2 BC CC和BC的值位于另一个基于ADDRESSID的名为ADDRESSVALUE的表中 ID CODE

我有一个名为INVOICE的表,从中可以获得ADDRESSID

ID      CODE    VALUE
1        BB      BlindFold
2        BC      Bucharest
我有另一个名为Address的表

ADDRESSID         ADDRESS
2                 BB
2                 BC
CC和BC的值位于另一个基于ADDRESSID的名为ADDRESSVALUE的表中

ID      CODE    VALUE
1        BB      BlindFold
2        BC      Bucharest
现在我使用内部联接作为查询表

SELECT AC.VALUE AS ADDRESS 
FROM ADDRESS AS OT
INNER JOIN INVOICE AS OM ON  OM.ADDRESSID = OT.ADDRESSID
INNER JOIN ADDRESSVALUE AS AC ON OT.ADDRESS = AC.CODE
WHERE OM.ADDRESSID = 2
我得到的结果是

Blindfold
Blindfold
但应该是这样

BlindFold
Bucharest

直接使用而不加入

SELECT OM.VALUE AS ADDRESS 
FROM INVOICE AS OM WHERE OM.ADDRESSID = @AddressID
--

(更新)获得您想要的结果的一种方法:

SELECT AC.VALUE AS ADDRESS 
FROM ADDRESS AS OT
INNER JOIN INVOICE AS OM ON  OM.ADDRESSID = OT.ADDRESSID
INNER JOIN ADDRESSVALUE AS AC ON OT.ADDRESS = AC.CODE
WHERE OM.ADDRESSID = @AddressID

SQLFiddle。

如果Address和Addressvalue表应该通过两个表中存在的列ADDRESSID连接,那么select语句应该包括如下内容

ADDRESS.ADDRESSID = ADDRESSVALUE.ADDRESSID
试试这个

SELECT C.VALUE AS ADDRESS
FROM ADDRESS A
INNER JOIN INVOICE B ON A.ADDRESSID=B.ADDRESSID
INNER JOIN ADDRESSVALUE C ON A.ADDRESSID=C.ADDRESSID 
    AND A.ADDRESS=C.CODE
WHERE B.ADDRESSID=2

例如,你可以看到

我认为根本不应该有任何结果。当您使用ADDRESSVALUE连接ADDRESS时,没有匹配项--BB不匹配Blindfold。抱歉,它现在已编辑。您使用的是两个不同的别名,但只有一个表。发票表中没有值列。你漏掉了WHERE关键字。它让我蒙了两次眼睛。你确定吗?!再次检查,并检查您部分中的相关查询。已编辑问题,请立即帮助。