例: 労働時間を調べるためのUnion演算の実行は、外部結合を示しているわけではありません。この操作は、結合条件で一致する結合テーブルのすべての行、および一致しない「左」結合テーブルまたは「右」結合テーブル、あるいは両方のテーブルからの行を返します。さらに、一致しない行はNULLで拡張されます。
ただし、内部結合とUNION演算子を使用して外部結合を実行することができますが、2つの内部結合を合併したものは外部結合ではありません。
2つの内部結合とUNION演算子を使用して外部結合を実行する例を次に示します。2番目の内部結合におけるNULL値の使用法に注意する必要があります。
SELECT Offering.CourseNo, Offerings.Location, Enrollment.EmpNo FROM Offerings, Enrollment WHERE Offerings.CourseNo = Enrollment.CourseNo UNION SELECT Offerings.CourseNo, Offerings.Location, NULL FROM Offerings, Enrollment WHERE Offerings.CourseNo <> Enrollment.CourseNo;
上記のUNION演算は、上に示した左外部結合の例と同じ次のような結果を戻します。
O.CourseNo | O.Location | E.EmpNo |
---|---|---|
C100 | El Segundo | 235 |
C100 | El Segundo | 668 |
C200 | Dayton | ? |
C400 | El Segundo | ? |