mysql - SQL SELF 和 INNER JOINS 在一个查询中
问题描述
我有一个包含三个表的 SQL 数据库:部门、角色和员工。员工表有外键来引用部门和角色表中的主键,以及它自己表中的其他员工主键。我目前有两个单独的查询来访问我需要的信息,一个使用两个 INNER JOIN 来访问部门和角色表,一个使用 SELF JOIN。
SELECT employee.id
, employee.first_name
, employee.last_name
, role.title
, role.salary
, department.name AS Department
FROM employee
JOIN role
ON employee.role_id = role.id
JOIN department
ON role.department_id = department.id;
SELECT A.id
, A.first_name
, A.last_name
, CONCAT(B.first_name, ' ', B.last_name) As Manager
FROM employee A
, employee B
WHERE A.manager_id = B.id
ORDER
BY A.id;
我希望结果包括以下列:employee.id、employee.first_name、employee.last_name、role.title、role.salary、department.name AS Department 和 CONCAT(B.first_name, ' ', B.last_name)作为经理。
有没有办法可以将这两个查询组合成一个查询?谢谢!
解决方案
如果没有样本数据和表的模式,复制起来有点困难,但是……乍一看,我会在黑暗中试一试:
SELECT A.id, A.first_name, A.last_name, role.title,
role.salary, department.name AS Department,
CONCAT(B.first_name, ' ', B.last_name) As Manager
FROM employee A
JOIN employee B ON A.manager_id = B.id
JOIN role ON A.role_id = role.id
JOIN department ON role.department_id = department.id
ORDER BY A.id;
推荐阅读
- redirect - 新的 TYPO3 版本。10.4 安装在所有子页面上显示 404
- elasticsearch - Logstash 文件输入未写入 AWS EC2 上的 Elasticsearch 安装
- flutter - 如何设置 ChangeNotifier 以加载语言环境文件
- r - igraph 中代表最多的 10 个节点的子图
- sass - 我正在尝试使用 Foundation scss 建立一个新网站,但是,每次我尝试运行 sass 时都会出现此错误
- jenkins - Bitbucket webhook 正在触发存储库的所有 Jenkins 作业?
- java - Java中冗长的字符串压缩/解压缩
- kubernetes - GKE 外部负载均衡器配置,NEG 为空,运行状况检查不起作用
- java - 如何读取位于计算机上任何位置的文件?
- python - 在熊猫的另一列下方添加一整列数据