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'

上記のコードは次のように読み取ります -- C でレコードがリンクされている場合とされていない場合があり、D でレコードがリンクされている場合とリンクされていない場合があるレコードTable Aにリンクされているすべてのラベルと対応する名前を取得します。Table BC.LName = 'gas'

これは正しいですか?必要なのは、C または D にレコードが存在するかどうかに関係なく、B に存在する A からデータを取得することです。

4

2 に答える 2

0

いいえ。

結合に「ガス」のフィルターを配置する必要があります。そうしないと、左側の結合が事実上内部結合になります。

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 に答える