首页 > 热点专题

图解面试题:多表如何查询?

文章作者:来源:www.ecnprime.com时间:2020-03-09



[标题)?

现在有两个表,“学生表”记录学生的基本信息,包括“学生编号”和“姓名”。

“结果”表记录学生选修的课程和相应课程的结果。

这两个表由“学生编号”连接。

现在你必须找出所有学生的人数、姓名、课程和成绩。

[问题解决思路]

1。确认查询结果

主题要求查询所有学生的姓名、学号、课程和成绩信息

选择?学生编号、姓名、课程和结果

在“学生”表中列为“学生编号”和“姓名”,而“课程”和“结果”列在“结果”表中,因此需要多个查询表。

2。什么样的联系?

涉及多表查询时,前面的课程《从零学会sql:多表查询》提到了连接的需要。

多表联接可分为以下几种类型:

1)左联接,联接结果保留左表的所有数据

2)右联接,联接结果保留右表的所有数据

3)内联接,两个表的公共数据

取自标题“所有学生”,而“所有学生”位于“学生”表中。为什么不在“结果”清单上?

如果一些学生没有选修课,那么他们不会出现在“分数”表中,所以“分数”表不包括“所有学生”。

因此,“学生”表应该用于左连接,左表(学生表)中的所有数据都应该保留。

来自学生信息表单,作为左连接成绩表单,作为b

3。这两种形式的结合条件是什么?

两个表都有“学生编号”,所以连接条件是学生编号。

开启。学生证=学士。学生证

4。最终的sql

Running结果:我们看到所有学号为4的课程都为空,表明该学生没有选修课。

[主题测试网站]

调查多表连接以及如何选择连接类型。请记住本课程中提到的以下图表,当您遇到多表连接时,请从该图表中选择正确的sql。

[举一个例子,反过来举三个]

下面有两个表

来写一个符合条件的SQL查询:一个人是否有地址信息,必须根据上面的两个表来提供?人的以下信息:

[思路]

从表的结构可以看出,表1(人)是人的姓名信息,表2(地址)是人的地址信息。

1)查询结果是两个表中的列名,因此需要多个表来查询

2)考虑到有些人可能没有地址信息,如果查询结构是查询所有人,表1(人员)中的所有数据都需要保留,所以使用左连接?Join)

3)两个表的连接条件:两个表由personId连接。

[参考答案]

建议:如何提高你的分析能力,实现晋升和加薪?