![](/img/trans.png)
[英]Formatting left join in mysql select( Not showing all records in left table)
[英]Mysql join not showing all records
我正在使用带有连接的 Php,我有两个表(“服务”和“service_detail”),我想获取所有服务,但想知道供应商选择或未选择的服务
这是我的服务表结构
id service_name image
1 Abc abc.jpg
2 xyz xyz.jpg
3 OPS ops.jpg
4 tys tys.jpg
5 byp byp.jpg
这是我的 services_detail 表 strcutre
id vendor_id service_id price
1 101 1 50
2 101 2 70
3 101 3 80
4 101 4 30
5 102 1 70
6 102 2 40
...
我尝试使用以下查询但仅显示选定的服务,但我想获取所有带有参数的服务(已选择或未选择)我错在哪里? 这是我的查询
SELECT sd.vendor_id, sd.service_id, sd.price, s.service_name, s.image
FROM services_detail sd
LEFT JOIN services s
ON sd.service_id = s.id
WHERE sd.vendor_id = '101'
将您的 where 子句移动到ON
子句中的AND
:
AND sd.vendor_id = '101'
并在连接中交换表以获取所有服务
SELECT sd.vendor_id, sd.service_id, sd.price, s.service_name, s.image,
IF (sd.vendor_id is not null, 'Opted', 'Not opted') as status
FROM services s
LEFT JOIN services_detail sd
ON sd.service_id = s.id AND sd.vendor_id = '101';
简而言之,当Left Join
表上有一个包含过滤器的 where 子句时,它的行为就像INNER JOIN
而不是LEFT JOIN
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.