Du har en unexpected identifier i din SQL uttalande ... Detta beror på att du använder alias zcp onödigt. Med SQL som du har behöver du inte alias table i DELETE klausul.
DELETE FROM zc_products
WHERE products_id IN (SELECT DISTINCT p.products_id FROM zc_products p, zc_products_to_categories pc WHERE
p.products_id = pc.products_id AND
pc.categories_id IN (SELECT DISTINCT zcc.categories_id FROM zc_categories zcc WHERE zcc.categories_status = 0));
OBS Om du använde ett verktyg som MySQL Workbench -- Det skulle identifiera problemet för du ... Så att du lättare kan felsöka.