Wenn Sie WHERE
verwenden Bedingung in der rechten Tabelle eines LEFT JOIN
(Outer Join), wird es effektiv zu einem INNER JOIN
, weil WHERE
Klausel muss den Bedingungen entsprechen. Aus diesem Grund erhalten Sie nur Fälle, in denen c.active = 1
ist .
Sie müssen das WHERE
verschieben Bedingung zu LEFT JOIN .. ON .. AND ..
Bedingung:
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