Quando você usa
WHERE
condição na tabela do lado direito de um LEFT JOIN
(Outer Join), ele se torna efetivamente um INNER JOIN
, porque WHERE
cláusula precisa corresponder às condições. É por isso que você está recebendo apenas casos em que c.active = 1
. Você precisa mudar o
WHERE
condição para LEFT JOIN .. ON .. AND ..
doença: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