我有这两个表:


发票(包含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/

10-14 13:08
查看更多