mysql - MySQL - 在一个语句中查询三个表
问题描述
我正在尝试运行一个查询,它使用以下三个表选择信息,然后将结果合并为一个。
工作人员
s_id | name |salary_id(fk)| dept_id (fk) |
1 | John | 3 | 2 |
2 | Mike | 3 | 5 |
3 | Jen | 3 | 1 |
4 | Claire | 3 | 3 |
工资
id | salary |
1 | 28000 |
2 | 32000 |
3 | 34500 |
4 | 38000 |
bridge_team_staff
t_id (fk)| s_id (fk)|
2 | 2 |
3 | 1 |
4 | 2 |
1 | 3 |
2 | 4 |
这座桥解决了与团队和经理的多对多关系,因为经理可以拥有多个团队,而一个团队可以拥有多个经理。
我要运行的查询是根据桥表中的 team_id 收集经理的姓名、dept_id 和他们的薪水。
例如,如果我查询在 team_id 2 上的所有员工的姓名、部门 ID 和薪水,它将显示如下
name | dept_id | salary |
Mike | 2 | 34500 |
Claire | 3 | 34500 |
解决方案
如果我理解正确,您需要这样的查询:
SELECT m.name, m.dept_id, s.salary
FROM bridge_team_staff b
JOIN staff_members m ON(b.s_id = m.s_id)
JOIN salaries s ON(m.salary_id = s.id)
WHERE b.t_id = ?
推荐阅读
- python-3.x - 在烧瓶中,我无法从 facebook messenger 获取会话变量
- python - python中的通配符列表匹配
- symfony - symfony 4.2 max_depth_handler 序列化器如何实现?
- typescript - 淘汰赛foreach循环绑定不起作用
- keras - 如何加载视频(图像序列)成为 CNN-LSTM 深度学习模型的数据输入?
- android - R.layout 未找到
- sql-server - 有效更新 980K 记录,其中行在组中具有最大值
- c# - 如何在 Xamarin.IOS 中实现进程间通信 (IPC)
- laravel - 渴望加载分页
- php - 使用木材在“发布”数组中未设置的问题