我有这两个表:
发票(包含ID字段)
合同(包含fk到发票+“代码”字段)
假设我在发票表中有一个记录,在合同表中有两个记录。合同表中的两个记录都指向相同的发票记录。
需求:我想计算发票的数量。
到目前为止,我得到的是:
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,count(区别i.id)
从
发票我
加入
合同c
上
c.invoice_id = i.id
通过...分组
代码
关于mysql - 在(My)Sql一对多关系中计算基本记录的数量,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52863481/