如何将表中的两列与另一个表中的主键连接?

时间:2016-11-06 10:00:13

标签: sql sql-server asp.net-mvc

我有两个名为BusCityBusPath的表,BusCitycitiesBusPath存储路径。 BusPath有两列DepIdDesId。 我想加入这些表并得到城市名称。

这是我的代码示例:

 with cte as (
  select 
  BusPath.DepId,
BusCity.CityName as 'مبدا'
from BusPath 
inner join BusCity on BusCity.Id =BusPath.DesId
), ctf as( 
select
 BusPath.DesId,
BusCity.CityName as 'مقصد'
from BusPath 
inner join BusCity on BusCity.Id =BusPath.DepId)
select * from  cte , ctf

2 个答案:

答案 0 :(得分:0)

从此评论中

  

实际上我希望每列都有明显的连接

我知道你的问题是你有重复的问题。这是因为您在ctectf

之间制作了笛卡尔积

但我不知道为什么你只为获得城市名称而进行2次CTE ......

不仅仅是你想要做的吗?

select
    P.DesId, Des.CityName as 'مقصد',
    P.DepId, Dep.CityName as 'مبدا'
from BusPath P
inner join BusCity Dep on Dep.Id = P.DepId
inner join BusCity Des on Des.Id = P.DesId

答案 1 :(得分:-1)

您的代码中缺少第二次加入 select P.DesId, Des.CityName as 'مقصد', P.DepId, Dep.CityName as 'مبدا' from BusPath P left outer join BusCity Dep on Dep.Id = P.DepId left outer join BusCity Des on Des.Id = P.DesId