私はほぼ7000の行とテーブルを持つビューを持っていますが、私はまだビューからすべてを引き出し、該当する場合はUNITCOSTフィールドにnullを挿入します。ただし、一致する行のみを取得します。以下はコードです。他のテーブルに何も見つからないときでも、ジョインで1つのテーブルからすべての行を引っ張る
Select vto.*, vc.UNITCOST
From myView vto
LEFT JOIN VeryCost vc
ON vto.VI_ID = vc.VI_ID
Where (vc.VC_START_DATE BETWEEN '9/4/2016' AND '10/1/2016'
OR vc.VC_END_DATE BETWEEN '9/4/2016' AND '10/1/2016')
だから、私は何をしたいVIフィールドが日付が有効で一致ビューとVeryCostテーブルからUNITCOST値からすべての行を選択しています。 VIフィールドが一致しても日付が有効でない場合は、UNITCOSTをそれらの行に対してnullにします。推論のための
where句は、左結合を否定します。単に 'WHERE'という言葉を' AND'に変更するだけです。 where句を削除し、制限を結合に移動すると、すべての外部結合レコードが残るように結合前に制限が適用されます。 VCがNULL値で、除外されるのではなく、評価によって左結合によって生成されたNULLが除かれます。 – xQbert