MySQL で 3つのテーブルを結合する

Preet Sanghavi 2023年1月3日
MySQL で 3つのテーブルを結合する

このチュートリアルでは、MySQL で 3つのテーブルを結合する方法を学習します。

企業や組織は、3つのテーブルすべてに共通する特定の一致する列に基づいて、3つのテーブルを同時に視覚化する必要がある場合があります。この操作は、結合の助けを借りて MySQL で許可されます。

さまざまなテーブルから要件に従って列をフェッチし、すべてに共通する特定の列に基づいてテーブルを結合できます。たとえば、table_1table_2、および table_3 という名前の 3つのテーブルがあります。

最初のテーブルには名前があり、2 番目のテーブルには名前があり、最後のテーブルにはアドレスがあります。それぞれにプライマリ ID があり、これらのテーブルを共通のプライマリ IDMySQL を使用して 1つとしてマージまたは視覚化します。

この方法がどのように機能するかを理解しましょう。ただし、開始する前に、テーブル student_details といくつかの行を作成して、3つのダミーデータセットを作成する必要があります。

-- create the table student_details
CREATE TABLE student_details(
  stu_id int,
  stu_firstName varchar(255) DEFAULT NULL,
  stu_lastName varchar(255) DEFAULT NULL,
  primary key(stu_id)
);
-- insert rows to the table student_details
INSERT INTO student_details(stu_id,stu_firstName,stu_lastName) 
 VALUES(1,"Preet","Sanghavi"),
 (2,"Rich","John"),
 (3,"Veron","Brow"),
 (4,"Geo","Jos"),
 (5,"Hash","Shah"),
 (6,"Sachin","Parker"),
 (7,"David","Miller");

データのエントリを表示するには、次のコードを使用します。

SELECT * FROM student_details;

出力:

stu_id	stu_firstName	stu_lastName
1	      Preet	        Sanghavi
2	      Rich	        John
3	      Veron	        Brow
4	      Geo	        Jos
5	      Hash	        Shah
6	      Sachin	    Parker
7	      David	        Miller

次に、stu_id に対応する各学生のマークを含む student_marks という名前の別のテーブルが必要です。次のクエリを使用して、このようなテーブルを作成できます。

-- create the table student_details
CREATE TABLE student_marks(
  stu_id int,
  stu_marks int
);
-- insert rows to the table student_details
INSERT INTO student_marks(stu_id,stu_marks) 
 VALUES(1,10),
 (2,20),
 (3,30),
 (4,7),
 (5,9),
 (6,35),
 (7,15);

次のクエリを使用して、このテーブルを視覚化できます。

SELECT * from student_marks;

出力:

stu_id  stu_marks
1		10
2		20
3		30
4		7
5		9
6		35
7		15

最後に、student_email という名前の 3 番目のテーブルを作成しましょう。このテーブルには、stu_id 列と stu_email 列があります。stu_id 列は 3つのテーブルすべてに共通ですが、stu_email 列は検討中の学生の電子メールアドレスを表します。

次のクエリを使用して、3 番目のテーブルを作成できます。

-- CREATE TABLE student_email
CREATE TABLE student_email(
  stu_id int,
  stu_email varchar(255) DEFAULT NULL
);

-- insert rows to the table student_email
INSERT INTO student_email(stu_id,stu_email) 
 VALUES(1,"abc@d.in"),
 (2,"SEAabc@d.in"),
 (3,"DEabc@d.in"),
 (4,"KARTabc@d.in"),
 (5,"MARIOabc@d.in"),
 (6,"SPETERabc@d.in"),
 (7,"DAVIDabc@d.in");

次のクエリを使用して、上記で作成した student_email テーブルを視覚化できます。

SELECT * from student_email;

出力:

stu_id	stu_email
1		abc@d.in
2		SEAabc@d.in
3		DEabc@d.in
4		KARTabc@d.in
5		MARIOabc@d.in
6		SPETERabc@d.in
7		DAVIDabc@d.in

共通の列 stu_id を使用して、上記で作成した 3つのテーブルから、3つの値、特に学生の名、マーク、および電子メールアドレスを取得してみましょう。

MySQL で 3つのテーブルを結合する

3つのテーブルをマージするには、次のクエリを使用して、共通の列を使用し、別々のテーブルから異なる列をフェッチします。

select a.stu_firstName as "Name", b.stu_email as "Email", c.stu_marks as "Marks"
from student_details a, student_email b, student_marks c
where a.stu_id = b.stu_id and b.stu_id = c.stu_id 

上記のクエリに見られるように、共通の学生 ID に基づいて 3つのテーブルを結合しています。上記のコードの出力は次のとおりです。

Name	Email			Marks
Preet	abc@d.in		10
Rich	SEAabc@d.in		20
Veron	DEabc@d.in		30
Geo		KARTabc@d.in	7
Hash	MARIOabc@d.in	9
Sachin	SPETERabc@d.in	35
David	DAVIDabc@d.in	15
出力ブロックには、プログラムの読みやすさを向上させるために、MySQL のエイリアス NameEmail、および MarksAS キーワードがあります。

したがって、WHERE 句と ON 句を使用すると、3つの異なるテーブルを効率的に結合し、MySQL の一般的な条件に基づいてそれらの列を 1つとして視覚化できます。

著者: Preet Sanghavi
Preet Sanghavi avatar Preet Sanghavi avatar

Preet writes his thoughts about programming in a simplified manner to help others learn better. With thorough research, his articles offer descriptive and easy to understand solutions.

LinkedIn GitHub

関連記事 - MySQL Join