Menu
Coddy logo textTech

基本的な結合 その1

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

これまでは、単一のテーブルの問題に取り組んできました。ここでは、複数のテーブルを扱う方法を見ていきます。

次のテーブルがあるとします:

コース

course_idlecturer_id
11
21
32

講師

lecturer_id名前
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を使用します

この種類の結合は、内部結合とも呼ばれます。

challenge icon

チャレンジ

簡単

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

  • gradescourse_idstudent_idgrade
  • studentsidname

student_namecourse_idstudent_idgradeを1つのテーブルにまとめて取得するクエリを作成してください。結果をgradeの昇順で並べ替えてください。

自分で試してみよう

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

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

基礎のすべてのレッスン

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