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

複数の列に結合する方法

    問題:

    あるテーブルでプライマリ複合キーを使用し、別のテーブルで外部複合キーを使用して、複数の列でテーブルを結合したい。

    例:

    私たちのデータベースには、studentenrollment 、およびpaymentstudent テーブルの次の列にデータがあります:id (主キー)、first_name 、およびlast_name

    id first_name last_name
    1 エリー ウィルソン
    2 トム ブラウン
    3 サンドラ ミラー

    enrollment テーブルの次の列にデータがあります:主キー(student_id およびcourse_code )、is_active 、およびstart_date

    student_id course_code is_active start_date
    1 GD03 true 2020-01-20
    1 AP01 false 2020-03-10
    2 SL01 true 2020-05-05
    3 SL01 true 2020-06-01

    payment テーブルの次の列にデータがあります:外部キー(student_id およびcourse_codeenrollment 表)、status 、およびamount

    student_id course_code ステータス 金額
    1 GD03 有料 230
    1 AP01 保留中 100
    2 SL01 保留中 80
    3 SL01 保留中 110

    各学生の名前、コースコード、支払い状況と金額を表示しましょう。

    解決策:

    SELECT
      s.last_name, s.first_name,
      p.course_code, p.status, p.amount
    FROM enrollment e
    JOIN student s
      ON s.id=e.student_id
    JOIN payment p
      ON p.course_code=e.course_code
    	AND p.student_id=e.student_id;
    
    last_name first_name course_code ステータス 金額
    ウィルソン エリー GD03 有料 230
    ウィルソン エリー AP01 保留中 100
    ブラウン トム SL01 保留中 80
    ミラー サンドラ SL01 保留中 110

    ディスカッション:

    テーブルに格納されているデータを、あるテーブルの主キーと別のテーブルの外部キーである複合キーで結合する場合は、複数の列で結合条件を使用するだけです。

    1つの結合されたテーブル(この例では、enrollment )、2つの列(student_id)から構築された主キーがあります およびcourse_code )。 2番目の表(payment )、外部複合キー(student_id)である列があります およびcourse_code )。これらの複合キーを使用してテーブルを結合するにはどうすればよいですか?

    簡単! JOINを使用するだけです 最初の条件の後にAND演算子を使用して、複数の条件を持つ句。この例では、次の条件を使用します:

    p.course_code=e.course_code AND p.student_id=e.student_id

    最初の部分では、student_idを使用します enrollment テーブルとstudent_id payment テーブル。次の条件では、course_codeを取得します enrollment テーブルとcourse_code payment テーブル。

    student_idに注意してください およびcourse_code 列は、enrollment テーブル。したがって、それらはpayment 外部キーとしてのテーブル。


    1. UbuntuにMySQLをインストールして設定する方法

    2. PL/SQLオンラインMCQクイズ

    3. SQL ServerManagementStudioを使用してBLOBをデータベースに挿入する方法

    4. MySQLトリガーはCHECK制約をシミュレートできますか?