Khi bạn sử dụng WHERE
điều kiện trên bảng bên phải của LEFT JOIN
(Outer Join), nó thực sự trở thành một INNER JOIN
, bởi vì WHERE
mệnh đề cần phải phù hợp với các điều kiện. Đó là lý do tại sao bạn chỉ nhận được các trường hợp c.active = 1
.
Bạn cần chuyển WHERE
điều kiện để LEFT JOIN .. ON .. AND ..
điều kiện:
SELECT
p.id, c.id as category_id
FROM
(SELECT id FROM products p WHERE p.id > 6319055 ORDER BY id LIMIT 1000) prods
LEFT JOIN
products p ON p.id = prods.id
LEFT JOIN
categories c ON c.id = p.category_id
AND c.active = 1