спасибо! :-)

я есть эта таблица тегов,

tag_id  tag_name    parent_id   cat_id
3       Tagname-1   NULL        NULL    
5       tagname-2   NULL        NULL    
6       tagname-3   NULL        NULL
9       tagname-4   NULL        NULL
11      tagname-5   3           NULL
13      tagname-6   3           NULL
15      tagname-8   5           NULL
17      tagname-9   5           NULL
18      tagname-10  NULL        NULL
20      tagname-11  6           NULL
22      tagname-12  9           NULL
24      tagname-13  NULL        NULL
26      tagname-14  NULL        NULL
28      tagname-15  NULL        NULL

Я хочу вернуть такой результат,

ParentID    ParentName  TotalChildren
3           Tagname-1   2
5           tagname-2   2
6           tagname-3   1
9           tagname-4   1
18          tagname-10  0
24          tagname-13  0
26          tagname-14  0
28          tagname-15  0

Итак, вот вопрос, с которым я вышел до сих пор,

SELECT 
a.tag_id as ParentID,
a.tag_name as ParentName,
b.TotalChildren

FROM root_tags a INNER JOIN
(
    SELECT parent_id, COUNT(1) as TotalChildren
    FROM root_tags
    WHERE parent_id <> tag_id
    GROUP BY parent_id
) b 

ON a.tag_id = b.parent_id
ORDER BY ParentID

Но, к сожалению, он только возвращает результат, как это,

ParentID    ParentName  TotalChildren
3           Tagname-1   2
5           tagname-2   2
6           tagname-3   1
9           tagname-4   1

А это значит, что без родителей не хватает детей.

Как я могу сделать метки без детей, чтобы тоже стать родителями? или другими словами, как сделать так, чтобы родители без родителей сами становились родителями?

РЕДАКТИРОВАТЬ:

SELECT 
a.tag_id as ParentID,
a.tag_name as ParentName,
b.TotalChildren

FROM root_tags a LEFT OUTER JOIN
(
    SELECT parent_id, COUNT(1) as TotalChildren
    FROM root_tags
    WHERE parent_id <> tag_id
    GROUP BY parent_id
) b 

ON a.tag_id = b.parent_id
ORDER BY ParentID

ответ выше возвращает,

ParentID    ParentName  TotalChildren
3           Tagname-1   2
5           tagname-2   2
6           tagname-3   1
9           tagname-4   1
11          tagname-5   NULL
13          tagname-6   NULL
15          tagname-8   NULL
17          tagname-9   NULL
18          tagname-10  NULL
20          tagname-11  NULL
22          tagname-12  NULL
24          tagname-13  NULL
26          tagname-14  NULL
28          tagname-15  NULL

что неверно, так как возвращает всех детей.

Ответы на вопрос(4)

Ваш ответ на вопрос