SQL JOIN三个或更多表

SQL JOIN三个或更多表

JOIN多个表格 在SQL中是一项棘手的任务。如果你需要在单个SQL查询中JOIN两个以上的表格,那么这可能会更加困难,我们将分析如何使用 INNER JOINs 从多个表格中检索数据。在本部分中,我们使用了两种方法来 JOIN三个或更多表格。

示例:

我们创建三个表格,如下所示:

  1. 学生
  2. 成绩
  3. 详情

表1:学生

create table student(s_id int primary key, s_name varchar(17));
insert into student values(1, 'Jack');
insert into student values(2, 'Rithvik');
insert into student values(3, 'Jaspreet');
insert into student values(4, 'Praveen');
insert into student values(5, 'Bisa');
insert into student values(6, 'Suraj');

学生表

SQL JOIN三个或更多表

在上面的表格中, s_id 是主键。

表2:成绩

create table marks(school_id int primary key, s_id int, score int, status varchar(20));
insert into marks values(1004, 1, 23, 'fail');
insert into marks values(1008, 6, 95, 'pass');
insert into marks values(1012, 2, 97, 'pass');
insert into marks values(1016, 7, 67, 'pass'); 
insert into marks values(1020, 3, 100, 'pass');
insert into marks values(1025, 8, 73, 'pass');
insert into marks values(1030, 4, 88, 'pass');
insert into marks values(1035, 9,  13, 'fail');
insert into marks values(1040, 5,  16, 'fail');
insert into marks values(1050, 10, 53, 'pass');

成绩表

SQL JOIN三个或更多表

在上面的表中, school_id 是主键,s_id 是外键。

表3:详情

create table details(address_city varchar(20), email_ID varchar(20),    school_id int, accomplishments varchar(50));

insert into details values('Bangalore',  'jsingh@jtp.com',
                                1020, 'ACM ICPC selected');
insert into details values('Hyderabad', 'praveen@jtp.com',
                                1030, 'Geek of the month');
insert into details values('Delhi',     'rithvik@jtp.com',
                                    1012, 'IOI finalist');
insert into details values('Chennai',   'om@jtp.com',
                                 1111, 'Geek of the year');
insert into details values('Banglore', ' suraj@jtp.com',
                                 1008, 'IMO finalist');
insert into details values('Mumbai',    'sasukeh@jtp.com',
                                  2211, 'Made a robot');
insert into details values('Ahmedabad', 'itachi@jtp.com',
                               1172, 'Code Jam finalist');
insert into details values('Jaipur',    'kumar@jtp.com',
                                   1972, 'KVPY finalist');

SQL JOIN三个或更多表

在上表中, school_id外键 .

SQL 中,有两种方法可以连接三个或更多的表:

1. 在SQL中使用JOINS:

在这里应用的逻辑与连接两个表的逻辑相同,即连接 两个表 的最小连接语句数量为 (n-1) , 其中 n 是要连接的表的数量。

select s_name, score, status, address_city, email_id,
accomplishments from student s inner join mark m on
s.s_id = m.s_id inner join details d on 
d.school_id = m.school_id;

输出:

SQL JOIN三个或更多表

2. 使用父子关系:

在父子关系中,我们使用 where子句来连接两个或多个表。在一个表中创建列 X 作为主键,并在另一个表中创建列 X 作为外键。

看一下创建的表: s_id 是学生表中的主键,并且 s_id 是成绩表中的外键。 (学生(父)- 成绩(子))school_id 是成绩表中的主键,也是学生表中的外键。 (成绩(父)- 详情(子))

查询:

select s_name, score, status, address_city, 
email_id, accomplishments from student s, 
marks m, details d where s.s_id = m.s_id and 
m.school_id = d.school_id;

输出:

SQL JOIN三个或更多表

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程