首页 > 解决方案 > 计算(My)Sql 一对多关系中的基本记录数量

问题描述

我有这两张表:

假设我在 invoices 表中有一条记录,在contracts 表中有两条记录。合同表中的两条记录都指向同一个发票记录。

愿望:我想计算发票金额。

到目前为止我得到了什么:

select
    c.code, count(*)
from
    invoices i
join
    contracts c
on
    c.invoice_id = i.id
group by  
    c.code

虽然计数显示2而不是所需的1。我知道这是因为合同表上的连接,但不知道如何解决这个问题。

标签: mysql

解决方案


尝试使用 COUNT(DISTINCT i.id); 它应该计算结果集中的不同发票 ID。

选择
    c.code,计数(不同的 i.id)
从
    发票我
加入
    合同 c
上
    c.invoice_id = i.id
通过...分组  
    c.代码

推荐阅读