Имате unexpected identifier във вашия SQL оператор ... Това е така, защото използвате alias zcp ненужно. С SQL които имате, няма нужда от alias table в DELETE клауза.
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));
ЗАБЕЛЕЖКА Ако сте използвали инструмент като MySQL Workbench -- Той ще идентифицира проблема за вие ... Позволява ви по-лесно да отстранявате проблеми.