1

我有下面的代码,我希望能得到一些帮助以确保这是正确的。(缓慢的一天)

Select 
    A.Label, A.Name, C.UID, D.Unit 
From 
    A 
inner join 
    B on A.UID = B.FUID 
left join 
   C on B.UID = C.UID
left join 
   D on C.unitID = D.ID
Where 
   C.LName = 'Gas'

上面的代码读取 - 获取所有标签和相应的名称,Table A其中链接到一个记录,Table B其中在 C 中可能有也可能没有链接到它的记录,在 D 中可能有也可能没有链接到它的记录,和C.LName = 'gas'

请问这是正确的吗?我需要的是从 A 中提取存在于 B 中的数据,无论记录是否存在于 C 或 D 中。

4

2 回答 2

0

不。

您需要将“Gas”过滤器放入连接中,否则左连接将有效地成为内部连接

Select  
    A.Label, A.Name, C.UID, D.Unit  
From  
    A  
inner join B on A.UID = B.FUID  
left join C on B.UID = C.UID 
            and C.LName = 'Gas'
left join D on C.unitID = D.ID 
于 2012-10-15T15:02:56.890 回答
0

使用ON A.UID = B.FUID而不是where A.UID = B.FUID像这样:

Select A.Label, A.Name , FUID, D.Unit 
From A 
inner join B ON A.UID = B.FUID 
left join C ON B.UID = C.UID
left join D on C.unitID = D.ID
Where C.LName = 'Gas'
于 2012-10-15T15:03:10.123 回答