【问题标题】:How create sum from tabel 2 and show data tabel 1 and tabel 2 [closed]如何从表 2 创建总和并显示数据表 1 和表 2 [关闭]
【发布时间】:2021-01-01 10:46:28
【问题描述】:

A 表:

id invoice
1 001
2 002

表 B:

id invoiceId price
1 1 10
2 1 20
3 1 10
4 2 15

期待

id invoice total count
1 001 10 40
2 001 20 40
3 001 10 40
4 002 15 15

我的一对多关系。 因为我需要一列,其名称计数基于表 B 总和(价格),并按 invoiceId 分组 如何从表 A 和 B 中进行上面的 mysql 查询?。

【问题讨论】:

  • 计数值是如何计算的?
  • 你的 MySQL 版本是多少?我还可以看到您没有从tableA 中获取任何列。您是否希望 invoice 也会出现在输出中?
  • table1 中的 invoice 列从不使用有什么意义?

标签: mysql sequelize.js mysql-workbench


【解决方案1】:

在 MySQL 8+ 上,我们可以通过使用分析函数在没有子查询的情况下处理这个问题:

SELECT
    b.id,
    a.invoice,
    b.price AS total,
    SUM(b.price) OVER (PARTITION BY a.id) AS count
FROM TableB b
LEFT JOIN TableA a
    ON a.id = b.aid;

在早期版本的 MySQL 上,或者如果您从不喜欢分析函数的 ORM 层执行此操作,我们也可以尝试使用连接来聚合计数:

SELECT
    b1.id,
    a.invoice,
    b1.price AS total,
    COALESCE(b2.count, 0) AS count
FROM TableB b1
LEFT JOIN TableA a
    ON a.id = b1.aid
LEFT JOIN
(
    SELECT aid, SUM(price) AS count
    FROM TableB
    GROUP BY aid
) b2
    ON b2.aid = b1.aid;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-27
    • 2016-09-15
    相关资源
    最近更新 更多