mysql - 如何在MYSQL中查询这样的多个表
问题描述
假设我的数据库中有一些这样的表。第一个是 DA 表,它有三列,我想根据 PROJECT_ID 查询其他表。
下一个是 WORK 表。我想通过特定的 da_id 计算 work_bonus 和 work_salary 的总和。
下一张表是费用表
下一个是产品表
最后一张是汇总表。我想像下面这张表一样打印 DA。这意味着假设我想根据 project_id "15" 搜索 da,因此我将从 da 表中获取两个 da_id,即 da_id 1 和 2。现在工作、费用和产品表具有 da_id 字段。所以我想从工作、费用和产品表中打印 DA 摘要。在 WORK 表 DA_ID 1 中有两条记录,即 work_id 1 和 3。我想根据 DA_ID 合计其 WORK_BONUS 和 WORK_SALARY 值,这意味着 DA_ID 1 的总 WORK_BONUS 将是 40,DA_ID 1 的 WORK_SALARY 将是 400。像这样,休息表计算将相同。这是我想要的决赛桌。那么你能帮我计算一下mysql中的结果吗?谢谢
文字版——
DA TABLE
-------------------------------------------------
| DA_ID | PROJECT_ID | DA_DATE |
-------------------------------------------------
| 1 | 15 | 8/7/18 |
-------------------------------------------------
| 2 | 15 | 4/7/18 |
-------------------------------------------------
| 3 | 14 | 6/7/18 |
-------------------------------------------------
WORK TABLE
--------------------------------------------------------------------
| WORK_ID | DA_ID | WORK_BONUS | WORK_SALARY |
--------------------------------------------------------------------
| 1 | 1 | 10 | 100 |
--------------------------------------------------------------------
| 2 | 2 | 20 | 200 |
-------------------------------------------------------------------
| 3 | 1 | 30 | 200 |
--------------------------------------------------------------------
EXPENSE TABLE
-----------------------------------------------------
| EXP_ID | DA_ID | EXP_TOTAL |
-----------------------------------------------------
| 1 | 1 | 10 |
-----------------------------------------------------
| 2 | 2 | 20 |
-----------------------------------------------------
| 3 | 1 | 30 |
-----------------------------------------------------
PRODUCT TABLE
-------------------------------------------------------------
| PRODUCT_ID | DA_ID | PRODUCT_TOTAL |
-------------------------------------------------------------
| 1 | 1 | 5 |
-------------------------------------------------------------
| 2 | 2 | 10 |
-------------------------------------------------------------
| 3 | 1 | 15 |
-------------------------------------------------------------
SUMMARY TABLE
----------------------------------------------------------------------------------------
| SUMMARY_ID | DA_ID | TOTAL_BONUS | TOTAL_EXPENSE | TOTAL_PRODUCT |
----------------------------------------------------------------------------------------
| 1 | 1 | 40 | 400 | 20 |
----------------------------------------------------------------------------------------
| 2 | 2 | 20 | 200 | 10 |
----------------------------------------------------------------------------------------
解决方案
此查询将帮助您:
SELECT * FROM
(
SELECT sum(WORK_BONUS) AS TOTAL_BONUS,
sum(WORK_SALARY) AS TOTAL_SALARY
FROM WORK WHERE DA_ID = ?)
) t1,
(
SELECT sum(EXP_TOTAL) as TOTAL_EXPENSE
FROM EXPENSE WHERE DA_ID = ?
) t2,
(
SELECT sum(PRODUCT_TOTAL) AS TOTAL_PRODUCT
FROM PRODUCT WHERE DA_ID = ?
);
推荐阅读
- vb.net - 使用 DragDrop VB.Net 复制文件
- python-3.x - 在python dict中计算相等的值(碰撞)
- angular - Angular 12/rxjs 7/angularfire:不推荐使用 toPromise 的异步令牌拦截器
- python - 如何删除列中包含“无评论”字符串的行?
- python - 如何以不同的方式在骰子上获得点,我无法弄清楚
- android - 我可以在 iOS 和 android 应用程序中为 Google 登录设置嵌入式 Web 视图的用户代理吗?
- docker - 不了解 docker build --secret 应该如何使用
- javascript - 在 React 中使用 props 控制 Kendo PanelBar 的展开状态
- algorithm - 试图找到问题 Power Sum 解决方案的复杂性
- cypress - 如何在 Cypress 中处理 Cross Origin iframe 元素?