城镇报告(订单数量)

use*_*378 0 mysql sql select report

我正在按城镇创建报告.

SELECT S.city, count(*) as NumOfOrders
    FROM Shop as S
    LEFT JOIN orders O ON O.ShopID = S.ShopID
WHERE O.status = 4
Group by S.city
Run Code Online (Sandbox Code Playgroud)

结果显示如下:

Town 1  |   53
Town 2  |   45
Town 3  |   64
Run Code Online (Sandbox Code Playgroud)

它工作正常,但我想显示所有城镇甚至没有订单?

预期结果:

Town 1  |   53
Town 2  |   45
Town 3  |   64
Town 4  |   0
Town 5  |   0
Run Code Online (Sandbox Code Playgroud)

我已经尝试将LEFT JOIN替换为RIGHT JOIN,这甚至都不起作用.结果相同.

Adr*_*iro 6

您的过滤器不包括没有订单的过滤器.尝试将条件纳入联接,你应该没事.

SELECT S.city, count(O.any_non_nullable_field) as NumOfOrders
    FROM Shop as S
    LEFT JOIN orders O ON (O.ShopID = S.ShopID AND O.status = 4)
Group by S.city
Run Code Online (Sandbox Code Playgroud)