mysql - SQL 外连接

标签 mysql sql

三张表courses,registration,students

学生列

名字,姓氏,studentid,major,admitdate,graddate,gender,dob

注册中的列

courseid,studentid

类(class)中的列

类(class)编号,类(class)名称,学分

我需要修改的select语句

select lastname as 'Last Name',sum(credits) as 'Credits Registered For' from students   as s
inner join registration as r on s.studentid = r.studentid
inner join courses as c on c.coursenumber = c.courseid
group by last name;

实验室的问题是...修改之前的查询以显示所有学生,即使他们尚未注册类(class)。你应该有 14 行。未注册的学生将在输出中显示 NULL。

我知道这需要某种外部连接,但我没有完全掌握这些连接我已经阅读了这里和其他网站上的多篇文章,但似乎无法弄清楚。

最佳答案

使用LEFT JOIN

select  lastname as 'Last Name',
        sum(credits) as 'Credits Registered For' 
from    students   as s
        LEFT join registration as r on s.studentid = r.studentid
        LEFT join courses as c on c.coursenumber = r.courseid
group by last name;

关于mysql - SQL 外连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13410656/

相关文章:

MySQL ORDER BY 由 GROUP_CONCAT() 创建的字段

mysql - 如何使用 mysql 查询合并具有相同值和总值的行?

mysql - 在 shell 脚本中反勾以执行 MySQL 查询

php - 在 php 中的 if 语句中分配给 var

mysql 存储过程无法在 mysqlworkbench 或 java 代码中运行

php - 根据MySQL数据库中的股票随机生成数字

sql - '.'附近的语法不正确。在更新变量表时

mysql - 我应该为这个缓慢的多重连接查询添加哪些索引?

jquery - 如何从 cordova-sqlite 同步获取数据?

mysql - SQL - 多个拥有的项目