【问题标题】:mysql- get number of occurrencesmysql-获取出现次数
【发布时间】:2021-12-15 15:46:48
【问题描述】:

您好,我正在尝试使 mysql 查询正常工作,需要一些帮助。我有 2 张桌子(员工,预订)。

员工表包含员工详细信息

StaffID First_name Last_name
1 John Doe
2 Mary Doe

预订表包含

BookingID StaffID Status
1 1 cancelled
2 1 cancelled
3 1 confirmed
4 2 cancelled
5 1 confirmed

我想了解每位员工的确认/取消预订数量,但无法正常工作。我当前使用的查询是

Select staff.StaffID, staff.First_name, staff.Last_name, sum(booking.Status LIKE '$status') as Status 
from staff, booking 
where staff.StaffID = booking.ConvenerID 
group by staff.StaffID

$statuscancelledconfirmed。使用此查询,如果有状态值,我只能显示一行,如果员工没有取消,则不会显示该员工的行。即使$status 的计数是0,我如何才能显示该行。

【问题讨论】:

    标签: php mysql group-by sum left-join


    【解决方案1】:

    您需要一个LEFT 表连接:

    SELECT s.StaffID, s.First_name, s.Last_name, 
           COALESCE(SUM(b.Status = ?), 0) AS counter 
    FROM staff s LEFT JOIN booking b
    ON s.StaffID = b.StaffID 
    GROUP BY s.StaffID;
    

    ? 替换为您想要的状态值(没有理由使用运算符LIKE,因为简单的= 可以正常工作)。

    【讨论】:

    • 感谢您的回答,这很好!
    猜你喜欢
    • 2017-05-01
    • 2015-01-25
    • 2016-06-18
    • 2013-04-20
    • 2013-12-29
    • 1970-01-01
    • 2021-05-21
    • 1970-01-01
    • 2014-04-03
    相关资源
    最近更新 更多