次の 3 つのテーブルがあるとします。
- Cars (CarID) には、10 個の異なる車の行が含まれています。
- SafetyTests (TestID, TestName) には、20 の個別の安全性テスト行が含まれています。
- TestResults (ID、TestID、CarID、TestValue) には、0 ~ 200 の安全テスト行の数値が含まれます。
安全性テスト テーブルには、Cars テーブルの 10 台の車に対して実行された各安全性テストの結果が含まれています。最大 20 の安全性テストがあります。これは明らかに、SafetyTests テーブルの選択ステートメントから取得されます。ただし、10台の車の中には20回のテストすべてを実行したものもあれば、5回しか実行していないものもあります.
車ごとに 20 の結果を表示する 10 x 20 のマトリックスを作成したいと考えています (20 の安全性テスト結果がない場合でも)。車でテストがまだ実行されていない場合は、テスト名だけが表示されますが、値はゼロ (または null) です。
これは、SafetyTests テーブルに対する SELECT (テスト ID の個別のリストを取得するため) と、Cars と TestResults の間の JOIN の組み合わせに対する LEFT JOIN であると考えましたが、問題は、欠落しているテストに対して NULL の CAR ID を返すことです。 Car テーブルに一致するものはありませんでした。