mysql - 将 sum() 函数放入 View 中

标签 mysql view

我已经规范化我的表以将 tb_header 和 tb_detail 分开。 这是 tb_repair 详细信息。

mysql> SELECT DETAIL_ID, REPAIR_ESTIMATE_ID, REMARKS, MANHOUR FROM tb_repair_detail;
+-----------+--------------------+----------------------+---------+
| DETAIL_ID | REPAIR_ESTIMATE_ID | REMARKS              | MANHOUR |
+-----------+--------------------+----------------------+---------+
|         9 |                 50 | Anda                 |   12.00 |
|        10 |                 50 | Jika                 |   10.00 |
|        11 |                 51 | ACRYLIC              |   12.00 |
|        12 |                 51 | Pembersihan exterior |   10.00 |
|        13 |                 51 | Repairing            |   10.00 |
+-----------+--------------------+----------------------+---------+
5 rows in set (0.00 sec)

现在,为了让用户更具可读性,我想创建一个如下所示的 View :

mysql> SELECT  a.REPAIR_ESTIMATE_ID , a.EIR_REF  ,
->  (SELECT b.NAMA FROM tb_customer_master b WHERE a.COSTUMER_ID = b.COSTUMER_ID) AS "NAMA_CUSTOMER"
-> from tb_master_repair_estimate a ;
+--------------------+---------+----------------------+
| REPAIR_ESTIMATE_ID | EIR_REF | NAMA_CUSTOMER        |
+--------------------+---------+----------------------+
|                 50 | 1545053 | APL                  |
|                 51 | 1545052 | APL                  |
+--------------------+---------+----------------------+
2 rows in set (0.00 sec)

我的问题是,我想将基于 REPAIR_ESTIMATE_ID 的工时总数放入此 View 中,如何将此工时总数放入此 View 中?我知道对每个 REPAIR ESTIMATE_ID 的 sum() 的查询就像

mysql> SELECT SUM(MANHOUR) AS TOTAL FROM tb_repair_detail a WHERE a.REPAIR_ESTIMATE_ID = 51

mysql> SELECT SUM(MANHOUR) AS TOTAL FROM tb_repair_detail a WHERE a.REPAIR_ESTIMATE_ID = 50;
+-------+
| TOTAL |
+-------+
| 22.00 |
+-------+

+-------+
| TOTAL |
+-------+
| 32.00 |
+-------+
1 row in set (0.00 sec)

但是,我如何让他们进入这些 View ?

最佳答案

SELECT a.repair_estimate_id, a.eir_ref, b.nama AS nama_customer, c.total
  FROM tb_master_repair_estimate a, tb_customer_master b,
    (SELECT repair_estimate_id, SUM(manhour) AS total
      FROM tb_repair_detail
      GROUP BY repair_estimate_id) c
  WHERE a.repair_estimate_id = c.repair_estimate_id
    AND a.COSTUMER_ID = b.COSTUMER_ID

我认为应该给出所需的结果集。将其设置为您的 View 查询,您就应该完成设置。

请注意子句GROUP BY Repair_estimate_id,它会导致子查询为repair_estimate_id<的每个不同值计算SUM(manhour)/.

关于mysql - 将 sum() 函数放入 View 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34144934/

相关文章:

python - SQLAlchemy+pymysql错误: sqlalchemy. util.queue.Empty

mysql - 在MySQL中使用正则表达式进行搜索和替换

mysql - Lightswitch + WCF RIA + MySQL 连接器/网络几乎可以工作,但还不太好

ruby - 如何在使用 ERB 作为主要模板引擎时在 Sinatra 中渲染 Mustache 部分

mysql - 显示超支项目数量的最佳方式

view - 插入到 sqlite View 中是如何工作的?

mysql - 使用 CASE 选择特定行的 SQL 查询

php - 这段代码有什么错误?..它总是在其他地方

android - 操作栏 Sherlock 操作项 View

python - 什么时候获取 numpy 数组的子矩阵返回 View 而不是复制?