2014-12-13 2 views
1

Я создал следующие скрипку: http://sqlfiddle.com/#!2/fc0d9/19счетных вложенные наборы детей

Я пытаюсь подсчитать число непосредственных детей каждый узел имеет, адаптируя SQL из следующих функций: http://en.wikipedia.org/wiki/Nested_set_model

CREATE TABLE Personnel 
    (
    name varchar(20), 
    lft int, 
    rgt int 
    ); 

SELECT Parent.name, count(Child.*) 
FROM Personnel AS Child, Personnel AS Parent 
WHERE Parent.lft < Child.lft AND Parent.rgt > Child.rgt 
GROUP BY Parent.name 
+0

Это правильные данные? http://sqlfiddle.com/#!2/fc0d9/20 – paqogomez

+0

Да, это данные персонала. Мой SQL показывает количество всех потомков, но я стараюсь ограничить количество непосредственных детей. Ссылка в Википедии показывает, как вернуть только непосредственных детей, но я не могу понять, как их подсчитать. – Dercni

ответ

3

Ниже приведена синтаксическая ошибка:

SELECT Parent.name, count(*) 
FROM Personnel AS Child join 
    Personnel AS Parent 
    on Parent.lft < Child.lft AND Parent.rgt > Child.rgt -- associate Child Nodes with ancestors 
GROUP BY Parent.name; 

SQL не разрешает выражения sion count(child.*).

Смежные вопросы