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,我有一个有五列的表: streetId, streetName, areaId, ISfSectionId1, ISFsectionId2 其中,areaId是表area的外键,isfsectionid1和isfsectionid2是同一主键isfsectionId的外键(isfsectionid2可以有空值) 我正在使用此查询加入他们 SELECT s.streetId, s.streetName, a.areaName, i.isfsectionName, d.ISFsectio

我有一个有五列的表:

streetId, streetName, areaId, ISfSectionId1, ISFsectionId2
其中,
areaId
是表
area
的外键,
isfsectionid1
isfsectionid2
是同一主键
isfsectionId
的外键(isfsectionid2可以有空值)

我正在使用此查询加入他们

SELECT 
    s.streetId, s.streetName, a.areaName, i.isfsectionName, d.ISFsectionName
FROM
    area a 
INNER JOIN
    street s ON s.areaId = a.areaId 
INNER JOIN
    ISFsections i ON s.fasileone = i.ISFsectionId 
JOIN
    ISFsections d ON s.fasiletwo = d.ISFsectionId
如果没有最后一个连接,它可以正常工作,但是在添加最后一个连接时,它只返回ISFsectionId2的记录


有什么问题吗?

尝试
左联接
s而不是当isfsectionId2为空时,如果使用内部联接,则不会得到任何行。选择左连接,比如M.Ali Saysry
left join
s,而不是isfsectionId2为空时,如果使用内部连接,则不会得到任何行。像阿里先生说的那样在那里左转
SELECT s.streetId
      ,s.streetName
      ,a.areaName
      ,i.isfsectionName
      ,d.ISFsectionName
from       area        a 
INNER join street      s on s.areaId = a.areaId 
LEFT join  ISFsections i on s.fasileone = i.ISFsectionId 
LEFT join  ISFsections d on s.fasiletwo = d.ISFsectionId