Menu
Coddy logo textTech

Basic Join Part 1

CoddyのSQLジャーニー「基礎」セクションの一部 — レッスン 43/72。

これまで、単一テーブルの問題を扱ってきました。今度は、複数のテーブルを扱う方法を検討します。

以下のテーブルがあると仮定します:

コース

course_idlecturer_id
11
21
32

講師

lecturer_idname
1Jhonas
2Malidos

タスクは、各コースに対応する講師の名前を表示することです。

これを達成する方法は2つあります。各オプションでは、一方のテーブルの各行を他方のテーブルにマッチングします。満たされる必要がある条件をチェックし、条件が満たされれば2つの行を1つに結合します。両方のオプションの望ましい結果:

course_idlecturer_name
1Jhonas
2Jhonas
3Malidos

オプション 1:

SELECT courses.course_id, lecturers.name AS lecturer_name
FROM courses, lecturers
WHERE courses.lecturer_id = lecturers.lecturer_id

ここでは FROM キーワードに2つのテーブルを記述し、WHERE 句では両方のレコードの lecturer_id が同じであることを要求します。SELECT 句では table.column と記述することで、データベースが列をどこから取得するかを知ることができます。

オプション 2:

SELECT courses.course_id, lecturers.name AS lecturer_name
FROM courses
JOIN lecturers ON courses.lecturer_id = lecturers.lecturer_id

WHERE の代わりに JOIN table ON condition を使用します

この種の結合は、inner joinとも呼ばれます。

challenge icon

チャレンジ

簡単

利用可能なテーブルと列:

  • <strong>grades</strong>: <strong>course_id</strong>, <strong>student_id</strong>, <strong>grade</strong>
  • <strong>students</strong>: <strong>id</strong>, <strong>name</strong>

student_namecourse_idstudent_id および grade を1つのテーブルで取得するクエリを作成してください。結果を grade の昇順で並べ替えてください。

チートシート

複数のテーブルからデータを結合するには、WHERE を使用したカンマ構文または JOIN 構文を使用します:

オプション 1: WHERE を使用したカンマ構文

SELECT table1.column, table2.column
FROM table1, table2
WHERE table1.id = table2.id

オプション 2: JOIN 構文

SELECT table1.column, table2.column
FROM table1
JOIN table2 ON table1.id = table2.id

複数のテーブルから選択する際は、列がどのテーブルから来るかを指定するために table.column 構文を使用します。このタイプの結合はインナージョインと呼ばれます。

自分で試してみよう

quiz icon腕試し

このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。

基礎のすべてのレッスン