sql >> データベース >  >> RDS >> Mysql

左アウタージョインを使用するのはいつですか?

    結合は、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になります。



    1. Oracle VMVirtualBoxを使用した仮想マシンの作成

    2. PHPを使用してMySQLに「€」記号を保存するにはどうすればよいですか?

    3. MySQLデータベースにpingを実行し、PDOを使用して再接続するにはどうすればよいですか

    4. リモートMySQL接続を有効にする:エラー1045(28000):ユーザーのアクセスが拒否されました