結合は、2つの関連するテーブルを結合するために使用されます。
この例では、次のようにEmployeeテーブルとDepartmentテーブルを組み合わせることができます。
SELECT FNAME, LNAME, DNAME
FROM
EMPLOYEE INNER JOIN DEPARTMENT ON EMPLOYEE.DNO=DEPARTMENT.DNUMBER
これにより、次のようなレコードセットが作成されます。
FNAME LNAME DNAME
----- ----- -----
John Smith Research
John Doe Administration
INNER JOIN
を使用しました その上。 INNER JOIN
■2つのテーブルを組み合わせて、のみ 両方のテーブルで一致するレコードが表示され、結合されます。 この場合、部門番号(従業員のフィールドDNO、部門テーブルのDNUMBER)
LEFT JOIN
■最初のテーブルにレコードがある場合、2つのテーブルを組み合わせることができますが、そうでない場合があります 2番目のテーブルにレコードがあります。たとえば、すべての従業員と扶養家族のリストが必要だとします。
SELECT EMPLOYEE.FNAME as employee_first, EMPLOYEE.LNAME as employee_last, DEPENDENT.FNAME as dependent_last, DEPENDENT.LNAME as dependent_last
FROM
EMPLOYEE INNER JOIN DEPENDENT ON EMPLOYEE.SSN=DEPENDENT.ESSN
ここでの問題は、従業員がしない場合です。 依存関係がある場合、DEPENDENTテーブルに一致するレコードがないため、レコードはまったく表示されません。
したがって、左を使用します すべてのデータを「左」(つまり、最初のテーブル)に保持し、一致するデータを「右」(2番目のテーブル)にプルするjoin:
SELECT EMPLOYEE.FNAME as employee_first, EMPLOYEE.LNAME as employee_last, DEPENDENT.FNAME as dependent_first, DEPENDENT.LNAME as dependent_last
FROM
EMPLOYEE LEFT JOIN DEPENDENT ON EMPLOYEE.SSN=DEPENDENT.ESSN
これで、すべてになります 従業員の記録の。特定の従業員に一致する扶養家族がいない場合、dependent_first
およびdependent_last
フィールドはnullになります。