一道有关多表联合查询的面试题

进入大三,学校搞了一个校企联合的实验班,打算招40个人今天早上去面试。
面试我的听说是这家软件公司的副总经理(女的),面试过程简简单单,聊了
一些家常,谈了我这两年来的学习与未来的打算。之后让我去下一位面试官处写编程
题。
首先,他先问我学过数据库没有,我说只学过一点点,在做java开发的小博客的
时候用到什么学什么的。他说基本的语句应该会吧。我说还可以。然后他就给了我一道
题目让我写。大概题目是这个样子。

三个表:
students表
id,
name
subjects表
id,
java,
math
scores表
stu_id,
sub_id,
score
对这单个表写一条查询语句,要求:查出这三个表的信息,当学生缺考的时候,scores表中是没有记录存在的,但是查询的结果要求缺考的同学的信息也要现实出来。
对于只会一点点数据库操作的皮毛的我当场没有做出来,他问了问我的思想,我就按照我的想法大概说了一遍,他说在乎语法的东西,我们要的只是思想。我是只说了个用联合查询。其他的就不知道了。面试也就这样结束。有点悲剧。
下午回来,我发誓一定要吧这个题目搞定,找了一下书,没什么头绪,上网google一下,
这是上网找到的修改而来的方案

SELECT name, subject, score from (scores RIGHT JOIN students on scores.stu_id=students.id) LEFT JOIN subjects on scores.sub_id=subjects.id

SELECT name, subject, score from scores sc left outer join subjects su on sc.sub_id=su.id right outer join students st on st.id=sc.stu_id

也没有找到什么好的解决方案。正当要放弃的时候(因为这个逃了一下无的课,弄了一下午),突发奇想(就是猜,心想这反正错了那么多次,再错一次也无妨),把上面的句子做了一下变形:

SELECT name, subject,score from (students, subjects) left join scores on scores.stu_id=students.id and scores.sub_id=subjects.id

没想到的时这样问题居然解决了(本人数据库基本没学,基础太差,所以不知道from后面的表还可以用括号括起来,也不知道join子句可以用and连接),真的是功夫不负有心人纳。。。。到此结束。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值