SQL - 左結合: 初心者向けの包括ガイド

こんにちは、SQLに興味を持つ皆さん!今日は、SQLの左結合の世界に楽しく飛び込んでみましょう。プログラミングが初めてであれば心配しないでください。あなたの親切なガイドとして、ステップバイステップですべてを説明します。コーヒーを淹れて、一緒に潜りましょう!

SQL - Left Join

外部結合とは?

左結合に詳しくなる前に、まず外部結合とは何かを理解しましょう。パーティを計画しているとします。その際、友人たちの名前のリストと、彼らの好きな飲み物のリストの2つがあります。外部結合は、友人たちが好きな飲み物を指定していない場合や、飲み物が誰にでも割り当てられていない場合でも、これらのリストを結合することに似ています。

SQLの用語では、外部結合は、関連する列に基づいて2つ以上のテーブルの行を結合する东西があります。一致しないテーブルでも結合が可能です。外部結合には3つの種類があります:

結合タイプ 説明
左結合 左テーブルのすべての行と右テーブルの一致する行を返します
右結合 右テーブルのすべての行と左テーブルの一致する行を返します
全結合 左テーブルまたは右テーブルのいずれかで一致する場合すべての行を返します

このチュートリアルでは、最も一般的に使用される外部結合である左結合に焦点を当てます。

SQLの左結合

左結合は、左テーブル(クエリで最初に挙げられたテーブル)のすべての記録と、右テーブルの一致する記録を返します。一致しない場合、右側の結果はNULLになります。

例をみてみましょう。StudentsテーブルとCoursesテーブルの2つがあるとします。

-- Studentsテーブル
CREATE TABLE Students (
StudentID INT PRIMARY KEY,
Name VARCHAR(50)
);

INSERT INTO Students VALUES
(1, 'Alice'),
(2, 'Bob'),
(3, 'Charlie');

-- Coursesテーブル
CREATE TABLE Courses (
CourseID INT PRIMARY KEY,
CourseName VARCHAR(50),
StudentID INT
);

INSERT INTO Courses VALUES
(101, 'SQL Basics', 1),
(102, 'Advanced SQL', 2),
(103, 'Data Analysis', NULL);

さて、左結合を使用して、すべての学生と彼らの科目(場合によっては)を見てみましょう:

SELECT Students.Name, Courses.CourseName
FROM Students
LEFT JOIN Courses ON Students.StudentID = Courses.StudentID;

結果は以下のようになります:

Name CourseName
Alice SQL Basics
Bob Advanced SQL
Charlie NULL

Charlieが結果に表示されているように、彼は科目に登録していないにも関わらず、左結合の魔法の効果です!

複数のテーブルを左結合で結合する

基本を理解したので、少し難易度を上げてみましょう。現実のシナリオでは、しばしば2つ以上のテーブルを結合する必要があります。心配しないでください。左結合はあなたをサポートします!

例に第三个のテーブルを追加してみましょう:Instructors

CREATE TABLE Instructors (
InstructorID INT PRIMARY KEY,
InstructorName VARCHAR(50),
CourseID INT
);

INSERT INTO Instructors VALUES
(201, 'Prof. Smith', 101),
(202, 'Dr. Johnson', 102),
(203, 'Ms. Williams', NULL);

さて、すべてのテーブルを結合して、学生、科目、指導教員の包括的なビューを見てみましょう:

SELECT Students.Name AS StudentName,
Courses.CourseName,
Instructors.InstructorName
FROM Students
LEFT JOIN Courses ON Students.StudentID = Courses.StudentID
LEFT JOIN Instructors ON Courses.CourseID = Instructors.CourseID;

このクエリはまずStudentsCoursesを結合し、その結果をInstructorsと結合します。結果は以下のようになります:

StudentName CourseName InstructorName
Alice SQL Basics Prof. Smith
Bob Advanced SQL Dr. Johnson
Charlie NULL NULL

複数のテーブルの情報を簡単に結合できるのは素晴らしいですね!

左結合でWHERE句を使用する

時折、左結合の結果をフィルタリングしたい場合があります。WHERE句が役に立ちます。例えば、科目に登録していないすべての学生を見つめたいとします:

SELECT Students.Name
FROM Students
LEFT JOIN Courses ON Students.StudentID = Courses.StudentID
WHERE Courses.CourseID IS NULL;

このクエリは以下の結果を返します:

Name
Charlie

WHERE句は結合操作の後で適用されます。右テーブルを結合する前にフィルタリングしたい場合は、ON句を使用する必要があります。

結論

そして、皆さん、ここまでSQLの左結合の世界を旅しました。基本的な概念からより高度なアプリケーションまでです。左結合は、完全な一致がなくてもデータを結合する強力なツールです。

練習を重ねることで、左結合が自然に使えるようになります。左結合はSQLのツールボックスの中で、多様で便利で、いつでも必要なときに利用できる「スイスアーミーナイフ」です。

SQLをマスターする鍵は練習です。ですので、さまざまなクエリやテーブル構造を試してみることをお勧めします。ハッピーコーディング、そしてあなたの結合が常に成功するよう願っています!

Credits: Image by storyset