16.联表查询综合应用

  • • 发表于 3年前
  • • 作者 大妖怪
  • • 2680 人浏览
  • • 3 条评论
  • • 最后编辑时间 3年前
  • • 来自 [技 术]

原创声明:本文为作者原创,未经允许不得转载,经授权转载需注明作者和出处

前面的都是两个表联表,其实还可以多个表联表,并且可以多种联表方式混合使用。
首先先添加一张表,插入一些数据:

USE coupletDemo;
CREATE TABLE teacher(
    id INT NOT NULL AUTO_INCREMENT,
    name VARCHAR(5) NOT NULL,
    course VARCHAR(5) NOT NULL,
    class_id INT,
    PRIMARY KEY(id)
);

INSERT INTO teacher (name, course, class_id) VALUES ('老师1', '吃人', 1);
INSERT INTO teacher (name, course, class_id) VALUES ('老师2', '除妖', 2);

这里假设一个老师只能教一个班。然后插入老师姓名,课程和班级id:

如果要用联表查询查出每个学生所在的班级,还有老师,以及老师所教的课程,那么可以这么做:

SELECT s.id sid, s.name sname, s.gender sgender,s.stu_no sno,c.name cname, t.name, t.course FROM student s LEFT JOIN class c ON s.class_id = c.id LEFT JOIN teacher t ON t.class_id = c.id;


结果大概是这样。
这样联表的思路是,首先先用student表和class表联表,以联表之后的大表作为一张虚拟表,再用这张虚拟表和teacher表联表,最后查询出结果。
那么这样一来,和第三张表联表的方式可以是右联还可以是自联,甚至还可以是其它后面要学到的查询方式。

分享到:
评论区(共3条评论)
3条评论
Ctrl+Enter
作者

大妖怪

大妖怪

APP:1 帖子:76 回复:197 积分:7483

已加入社区[1546]天

梦里巷口,可有你倚门回首

作者详情》
Top