如何计数表2中的相关行与表1中的相关键,如果没有找到,则为零- mysql?

lnlaulya  于 2023-03-11  发布在  Mysql
关注(0)|答案(1)|浏览(108)

这里有三张tablemb_branchmb_itemmb_sell。而mb* 是从迷你酒吧里拿的。
1.我想列出mb_branch中的所有分支名称,并计算每个分支在给定日期的项目。假设它是2023-03-11
1.因此,我选择mb_branch中的所有br.name,并计算mb_item中所有与每个br.uid相关的行
1.我在mb_branch中有10行,但只显示2行。因为在1中给定的日期中存在项目。)
1.我希望显示每个br.name,即使mb_item中不存在行或显示为0。
这是我的代码。

select
    br.*, br.name,
    count(it.id) as nit,
    sl.staff1 as st1,
    sl.staff2 as st2,
    sl.staff3 as st3,
    sl.money as money
from mb_branch br
left join mb_item it on it.uid=br.uid
left join mb_sell sl on sl.uid=br.uid
where date(it.dtime)=?
group by br.uid,date(it.dtime)
sxissh06

sxissh061#

it表的条件放入WHERE子句中:

where date(it.dtime)=?

这将排除it没有匹配的任何外连接行,因为如果it.dtime为NULL,条件当然失败。
如果要限制外连接表的行数,请将条件放在JOIN..ON中。

...
from mb_branch br
left join mb_item it on it.uid=br.uid and date(it.dtime)=?
left join mb_sell sl on sl.uid=br.uid
group by br.uid,date(it.dtime)

相关问题