mysql - 计算(My)Sql 一对多关系中的基本记录数量
问题描述
我有这两张表:
- 发票(包含 id 字段)
- 合同(包含 fk 到发票 + 'code' 字段)
假设我在 invoices 表中有一条记录,在contracts 表中有两条记录。合同表中的两条记录都指向同一个发票记录。
愿望:我想计算发票金额。
到目前为止我得到了什么:
select
c.code, count(*)
from
invoices i
join
contracts c
on
c.invoice_id = i.id
group by
c.code
虽然计数显示2而不是所需的1。我知道这是因为合同表上的连接,但不知道如何解决这个问题。
解决方案
尝试使用 COUNT(DISTINCT i.id); 它应该计算结果集中的不同发票 ID。
选择 c.code,计数(不同的 i.id) 从 发票我 加入 合同 c 上 c.invoice_id = i.id 通过...分组 c.代码
推荐阅读
- ionic-framework - 离子键盘关闭后不调整内容大小
- c# - 将密码到期添加到 ASP.NET Core 2.1 MVC 标识
- c# - ASP.NET Core Route 属性在整个控制器类中可用
- javascript - 如何放大amCharts系列的第一个子弹?
- c# - 如何在 C# 中执行函数参数
- spring-boot - 在名称为“dispatcherServlet”的 DispatcherServlet 中找不到具有 URI [/WEB-INF/JSP/restapis.jsp] 的 HTTP 请求的映射
- d3.js - D3折线和文本重叠
- jquery - 我如何根据我在 Jquery Autocomplete 中选择的选项获取值(ID)
- vba - 如何使 vba PowerPoint 的自动运行工作?
- r - 带有 `dbplyr` 和 `RPostgres` 的 unnest json 列