Если без сообщений:
"DELETE FROM `e_sub_cat` WHERE `id` IN ('".implode(',', $del_cat."') AND `sub_cat_parent` = 0";
Только $del_cat через фильтр пропустите.
Если надо сообщение, что было не удалено и почему, аналогично в SELECT получить id/имя не удаленных категорий. `sub_cat_parent` > 0. И в очередь сообщений передать нужный текст.