所以我的两张桌子的粗略结构如下:
Table one: Services
services.id
services.name
Table two: Orders
orders.id
orders.item
orders.service
Run Code Online (Sandbox Code Playgroud)
表1包含服务列表.表二是订单清单.我正在尝试从表2(订单)生成所有服务订单的列表,但也包括(零)未订购的服务.我知道那是LEFT JOIN的来源,但它似乎根本不起作用.它显示大多数服务,但是没有显示一个或两个记录(来自服务).这是我到目前为止使用的查询..
任何指导都非常感谢,谢谢!
select services.name,count(orders.service)
from services
LEFT JOIN orders ON services.id=orders.service
WHERE item IN (1,2,3,4)
group by statuses.service;
Run Code Online (Sandbox Code Playgroud)
您的原始选择很好,应该允许来自服务表的所有记录.但是,您可以通过where子句限制此操作.如果没有加入特定的行,item将有一个NULL在它其中的WHERE条款被过滤掉.
SELECT services.name
,COUNT(orders.service)
FROM services
LEFT JOIN orders ON services.id = orders.service
WHERE item IS NULL
OR item IN ( 1, 2, 3, 4 )
GROUP BY statuses.service;
Run Code Online (Sandbox Code Playgroud)
请原谅我,如果有点错误,我来自SQL Server背景.
| 归档时间: |
|
| 查看次数: |
5131 次 |
| 最近记录: |