MySQL で 3つのテーブルを結合する
このチュートリアルでは、MySQL で 3つのテーブルを結合する方法を学習します。
企業や組織は、3つのテーブルすべてに共通する特定の一致する列に基づいて、3つのテーブルを同時に視覚化する必要がある場合があります。この操作は、結合の助けを借りて MySQL で許可されます。
さまざまなテーブルから要件に従って列をフェッチし、すべてに共通する特定の列に基づいてテーブルを結合できます。たとえば、table_1
、table_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
Name
、Email
、および Marks
と AS
キーワードがあります。したがって、WHERE
句と ON
句を使用すると、3つの異なるテーブルを効率的に結合し、MySQL の一般的な条件に基づいてそれらの列を 1つとして視覚化できます。