Menu
Coddy logo textTech

Basic Join Part 1

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

これまでは、単一のテーブルに関する課題に取り組んできました。ここからは、複数のテーブルをどのように扱うかを見ていきましょう。

次のテーブルがあると仮定しましょう。

courses

course_idlecturer_id
11
21
32

lecturers

lecturer_idname
1Jhonas
2Malidos

各 `courses` の情報と、それに対応する `lecturers` の `lecturer_name` を表示することがこの `task` です。

これを実現するには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

チャレンジ

簡単

利用可能な `tables` と `columns`:

  • <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 の昇順で並べ替えてください。

自分で試してみよう

-- タスクが求める列を、求められたエイリアスを使ってリストする
SELECT ____
FROM students, grades
-- 両方のテーブルが同じ人物を記述している行のペアのみを残す
WHERE ____
ORDER BY grade
quiz icon腕試し

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

基礎のすべてのレッスン

自分で練習してみよう: SQLプレイグラウンド