Похоже, что после INNER JOIN Advertising AS a забыто условие объединения таблиц. Поэтому записи и дублируются, а в результирующей выборке декартово произведение двух таблиц.
Так же это может происходить из-за SELECT p.*, a.*, если в таблицах есть суррогатные ключи-счетчики.
select t.id, t.parent_id, t.name,
(select count(*) from table tmp where t.id = tmp.parent_id) child_count
from table t
where t.parent_id is null or t.parent_id = 0