Máte unexpected identifier ve vašem SQL statement ... Je to proto, že používáte alias zcp zbytečně. Pomocí SQL že máte, není potřeba alias table v DELETE klauzule.
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));
POZNÁMKA Pokud byste použili nástroj jako MySQL Workbench -- identifikoval by problém pro vy ... Umožňuje vám snadněji odstraňovat problémy.