使用外部联接,以便即使在table2中不存在匹配记录时也可以获取行。
看到您的查询非常奇怪,因为一方面您似乎是一个初学者,另一方面您使用的是上个世纪讲授的联接语法,并且这种联接语法已经过时了。
因此,您的查询最好如下所示:
SELECT
c.*,
p.*,
d.*,
f.*,
GROUP_CONCAT(DISTINCT e.features_title SEPARATOR '<br>') AS car_features
FROM bsi_car_master c
INNER JOIN bsi_car_type p ON p.id = c.car_type_id
INNER JOIN bsi_car_vendor d ON d.id = c.car_vendor_id
LEFT JOIN bsi_selected_features f ON f.car_id = c.car_id
LEFT JOIN bsi_car_features e ON e.id = f.features_id
GROUP BY c.car_id
p和d是内部联接的,即p和d必须匹配,否则不会选择c记录。但是f是外部联接的,因此即使f中没有针对该c的记录(那么该记录中的所有f列都为空),您也将得到c(以及p和d)。至于选择e,我们还必须对此进行外部联接,因为同样,如果没有匹配项,我们仍然希望记录c具有p和d。