2016-11-15 8 views
-3

に参加:私は別のテーブルから列を取得するには、テーブルに参加するとき数は、私は私に759行を与えるクエリを持って

Select 
    buildingID 
    ,buildingAddress 
    ,building_zip 
From 
    BuildingTable 

しかし、行数は707

に減少し
Select 
    buildingID 
    ,buildingaddress 
    ,building_zip 
    ,b.surveyCost 
From 
    BuildingTable as A 

    Inner Join SurveyTable as B 
    On a.buildingAddress = b.address 

私が紛失した行とその理由をテストする最良の方法は何ですか?これを防ぐ方法を教えてください。私は建物の中には調査費用がないものもあると思っていたので、コストがかかるものだけを見せていたのですが、そこにいくつかのヌル値があるので、それは問題ではありませんでした。

追加情報が必要な場合はお知らせください。おかげ

あなたは左が元のクエリと結果の結合クエリ間の結合行がusigを失っている行を見つけることができます
+1

データフレーム(内部、外部、左、右)を結合する方法(マージ)の可能な複製?](http://stackoverflow.com/questions/1299871/how-to-join-merge-data-frames -inner-outer-left-right) –

+1

'SurveyTable'のレコードの中に' surveyCost'フィールドに 'NULL'があるため、結果に' NULL'値があります。しかし、いくつかの建物には調査がないため、「行が失われました」。 'INNER JOIN'ではなく' LEFT JOIN'を使って見て、 'NoSurvery'と' SurveyWithNULLCost'の違いを見るために 'b.address'をクエリに追加してください。 – MatBailie

答えて

0

だけleft joininner joinを交換し、不足している行を探して、あなたが失われた行を検索するには:

Select bt.* 
From BuildingTable bt left join 
    SurveyTable st 
    on bt.buildingAddress = st.address 
where st.address is null; 

なお、行ができるALS o両方のテーブルで重複しているため、予想よりも多くの行が欠けている可能性があります。

0

Select 
    buildingID 
    ,buildingAddress 
    ,building_zip 
From 
    BuildingTable t1 
    left join ( 
    Select 
     buildingID 
     ,buildingaddress 
     ,building_zip 
     ,b.surveyCost 
    From 
     BuildingTable as A 
     Inner Join SurveyTable as B 
     On a.buildingAddress = b.address 
     ) t2 on t1.buildingID = t2.buildingID 
where t2.buildingID is null 

nulllですが、なぜ...は、データのあなたの知識に依存

関連する問題