在 SQL 中连接 4 个表
本文的目的是编写一个简单的程序,使用 SQL 中的 Join 和 Where 子句来连接两个表。下面是使用 MySQL 的相同实现。本主题的先决条件是您的计算机上安装了 MySQL 和 Apache Server。
介绍 :
在 SQL 中,查询是带有某种指令的请求,例如从数据库中插入、读取、删除和更新等记录。这些数据可用于各种目的,例如训练模型、查找数据中的模式等。在这里,我们将讨论在 SQL 中连接 4 个表的方法,并将对每个表使用 SQL 查询来实现,以便更好地理解。
方法 :
在这里,我们将讨论在 SQL 中实现 Joining 4 Tables 的方法和步骤。所以,让我们从创建一个数据库开始。
步骤 1:创建数据库 –
首先,我们将使用 SQL 查询创建数据库,如下所示。
CREATE DATABASE geeksforgeeks;
步骤 2:使用数据库 –
现在,我们将使用 SQL 查询来使用数据库,如下所示。
USE geeksforgeeks;
第 3 步:创建 table1 –
使用 SQL 查询创建一个表 1,名称为 s_marks,如下所示。
CREATE TABLE s_marks
(
studentid int(10) PRIMARY KEY,
subjectid VARCHAR(10),
professorid int(10)
);
第 4 步:创建 table2 –
使用 SQL 查询为教授详细信息创建一个表 2 作为 p_details,如下所示。
CREATE TABLE p_details
(
pid int(10) PRIMARY KEY,
pname VARCHAR(50),
pemail VARCHAR(50)
);
第 5 步:创建 table3 –
使用 SQL 查询为主题创建一个表作为主题,如下所示。
CREATE TABLE subjects
(
subjectid VARCHAR(10) PRIMARY KEY,
total_marks INT(5)
);
第 6 步:创建 table4 –
使用 SQL 查询为主题标记详细信息创建一个表,如下所示。
CREATE TABLE marks_details
(
total_marks INT(5) PRIMARY KEY,
theory INT(5),
practical INT(5)
);
输出 :
表的输出如下。
步骤 7:插入数据:
使用 SQL 查询在上面创建的表中插入一些数据,如下所示。
插入 s_marks –
INSERT INTO `s_marks` (`studentid`, `subjectid`, `professorid`) VALUES ('1', 'KCS101', '1');
INSERT INTO `s_marks` (`studentid`, `subjectid`, `professorid`) VALUES ('2', 'KCS102', '2');
插入 p_details –
INSERT INTO `p_details` (`pid`, `pname`, `pemail`) VALUES ('1', 'Devesh', 'geeks@abc.com');
INSERT INTO `p_details` (`pid`, `pname`, `pemail`) VALUES ('2', 'Aditya', 'for@abc.com');
插入主题 -
INSERT INTO `subjects` (`subjectid`, `total_marks`) VALUES ('KCS101', '100');
INSERT INTO `subjects` (`subjectid`, `total_marks`) VALUES ('KCS102', '150');
插入到marks_details –
INSERT INTO `marks_details` (`total_marks`, `theory`, `practical`) VALUES ('100', '70', '30');
INSERT INTO `marks_details` (`total_marks`, `theory`, `practical`) VALUES ('150', '100', '50');
步骤 8:验证和连接表 -
运行查询以找出学科实践分数为 50 的学生的 ID、教授姓名,如下所示。
SELECT s_marks.studentid, p_details.pname FROM s_marks
JOIN subjects ON s_marks.subjectid = subjects.subjectid
JOIN marks_details ON subjects.total_marks = marks_details.total_marks
JOIN p_details ON p_details.pid = s_marks.professorid
WHERE marks_details.practical = '50';
输出 :studentid pname 2 Aditya