题目

获取所有员工的emp_no、部门编号dept_no以及对应的bonus类型btype和received,没有分配奖金的员工不显示对应的bonus类型btype和received

CREATE TABLE `dept_emp` (
`emp_no` int(11) NOT NULL,
`dept_no` char(4) NOT NULL,
`from_date` date NOT NULL,
`to_date` date NOT NULL,
PRIMARY KEY (`emp_no`,`dept_no`));CREATE TABLE `emp_bonus`(
emp_no int(11) NOT NULL,
received datetime NOT NULL,
btype smallint(5) NOT NULL);CREATE TABLE `employees` (
`emp_no` int(11) NOT NULL,
`birth_date` date NOT NULL,
`first_name` varchar(14) NOT NULL,
`last_name` varchar(16) NOT NULL,
`gender` char(1) NOT NULL,
`hire_date` date NOT NULL,
PRIMARY KEY (`emp_no`));
  • 我的解答
select e.emp_no as 'e.emp_no',de.dept_no,eb.btype,eb.received
from employees e
left join dept_emp de on e.emp_no=de.emp_no
left join emp_bonus eb on e.emp_no=eb.emp_no

错误,不通过全部案例

  • 解答
select e.emp_no as 'e.emp_no',de.dept_no,eb.btype,eb.received
from employees e
inner join dept_emp de on e.emp_no=de.emp_no
left join emp_bonus eb on e.emp_no=eb.emp_no

换成内连接就可以了

本题严谨的思路为,先将 employees与dept_emp 用 INNER JOIN 连接,挑选出分配了部门的员工,再用 LEFT JOIN 连接

  • left join 是以左表为基准,全纪录,右表记录多删少补

  • inner join 是两表等值连接 ,只返回两个表中联结字段相等的行

也就是说,employees表中可能存在未分配部门的员工,使用左连接会出现dept_no 为 null的情况,而dept_emp表中dept__no是not null 因此内连接可以滤过未分配部门的员工

数据库实战20_获取所有员工的emp_no、部门编号dept_no以及对应的bonus类型btype和received,没有分配奖金的员工不显示对应的bonus类型btype和received相关推荐

  1. SQL数据库实战之查找当前薪水详情以及部门编号dept_no

    题目描述 查找各个部门当前(to_date='9999-01-01')领导当前薪水详情以及其对应部门编号dept_no CREATE TABLE `dept_manager` ( `dept_no` ...

  2. 《数据库SQL实战》查找当前薪水详情以及部门编号dept_no

    题目:查找各个部门当前(to_date='9999-01-01')领导当前薪水详情以及其对应部门编号dept_no CREATE TABLE dept_manager ( dept_no char(4 ...

  3. 《数据库SQL实战》查找所有员工的last_name和first_name以及对应部门编号dept_no,也包括展示没有分配具体部门的员工

    题目:查找所有员工的last_name和first_name以及对应部门编号dept_no,也包括展示没有分配具体部门的员工 CREATE TABLE dept_emp ( emp_no int(11 ...

  4. SQL实战之查找所有员工的last_name和first_name以及对应部门编号dept_no

    题目描述 查找所有员工的last_name和first_name以及对应部门编号dept_no,也包括展示没有分配具体部门的员工 CREATE TABLE `dept_emp` ( `emp_no` ...

  5. 牛客题霸 SQL5 查找所有员工的last_name和first_name以及对应部门编号dept_no

    https://www.nowcoder.com/practice/dbfafafb2ee2482aa390645abd4463bf 解决方案 select last_name,first_name, ...

  6. SQL数据库实战(含建表数据和查询案例)

    Oracle数据库安装的时候会自带一个练习用数据库(其中包含employee表,后来版本中此表改名为emp): 首先在安装过程中应该有个选项"是否安装实例表"(完全安装模式下默认是 ...

  7. mysql员工表部门表_部门表 department 部门编号 dept_id 部门名称 汇总表

    有两张表 部门表  department  部门编号 dept_id 部门名称 dept_mement create table department( dept_id tinyint auto_in ...

  8. oracle员工表和部门表基本操作

    emp 员工表(empno 员工号/ename 员工姓名/job 工作/mgr 上级编号/hiredate 受雇日期/sal 薪金/comm 佣金/deptno 部门编号) dept 部门表(dept ...

  9. 《数据库SQL实战》获取当前(to_date='9999-01-01')薪水第二多的员工的emp_no以及其对应的薪水salary

    题目描述 获取当前(to_date='9999-01-01')薪水第二多的员工的emp_no以及其对应的薪水salary CREATE TABLE salaries ( emp_no int(11) ...

最新文章

  1. android逆向分析概述_Android存储概述
  2. 搜索算法,一触即达:GitHub上有个规模最大的开源算法库
  3. 使用C#.NET列举组合数前N项和
  4. sql复杂查询语句总结
  5. js 获取中文的拼音
  6. 排序箭头,升序,降序简单实现
  7. HDU 2647 Reward (拓扑排序)
  8. 类String的构造函数、析构函数和赋值函数
  9. 电商系统_如何打造 一个完美的电商系统
  10. 【大学生】做‘心机’大学生,深度高效挖掘有效人脉
  11. 半岛电视台员工遭iOS iMessage app零点击0day 漏洞利用攻击
  12. git21天打卡day21-解决合并冲突
  13. 华理c语言设计网上作业,华理c程序实验报告(共9篇).doc
  14. java 打印excel
  15. 谷歌账号--手机号无法验证的问题
  16. seo关键词挖掘与筛选技巧
  17. NOIP2009 pj
  18. Teradata:数据可视化与模型优化相辅相成
  19. 全球首届VueConf演讲PPT和视频免费公开
  20. 启动三个线程,线程1打印1-5,线程2打印6-10,线程3打印11-15,接着线程1打印16-20……依此类推,打印到72.

热门文章

  1. 华为服务器1u系列,服务器 1u 尺寸
  2. 莱布尼兹天才发现,改变人类发展轨迹
  3. python批量搜索关键字_python – 搜索多个关键字的字符串列表
  4. 计算机会计信息系统的要素,【会计信息论文】计算机会计信息系统的内部控制制度(共3879字)...
  5. 老鼠试药——二进制算法
  6. 联想拯救者pro装华为鸿蒙OS,预装鸿蒙OS!华为Mate 40 Pro 4G通过3C认证
  7. 14.PG分区表-传统分区表
  8. cesium实现飞行漫游
  9. 2.1 - 操作系统的作用、分类
  10. SpringBoot实现登录注册