mysql—计算(my)sql 1对多关系中的基本记录数

eiee3dmh  于 2021-06-20  发布在  Mysql
关注(0)|答案(2)|浏览(276)

我有两张table:
发票(包含id字段)
合同(包含fk到发票+“代码”字段)
假设我在invoices表中有一条记录,在contracts表中有两条记录。合同表中的两个记录都指向同一个发票记录。
欲望:我想数一下发票的数量。
到目前为止我得到的是:

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

尽管计数显示的是2而不是所需的1。我知道这是因为contract表上的join,但不确定如何解决这个问题。

q1qsirdb

q1qsirdb1#

你要发票号码吗?

select count(*)
from invoices i

你想要有合同的发票吗?

select count( distinct c.invoice_id)
from
contracts

您的代码查找每个发票的合同数

ffvjumwh

ffvjumwh2#

尝试计数(不同的i.id);它应该统计结果集中不同的发票id。

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

相关问题