2016-08-08 3 views
-3

Я хочу получить кол-во детей. я попробовать этот запрос, но не работает таблицы columsКак получить счет детей пользователей

идентификатор, father_id, имя

select id As parent_id , father_id ,name, count(select * from users WHERE father_id = parent_id) As child 
     from users 
+1

Пожалуйста, вы можете указать таблицы с данными, поэтому мы имеем четкое представление о –

+0

что говорит об ошибке? –

ответ

3

Используйте коррелированный подзапрос для подсчета:

select id As parent_id , father_id ,name, (select count(*) from users u2 
              WHERE u2.father_id = u1.id) As child 
from users u1 
-1

Вы пробовали это, вместо пользование *, - укажите свое поле, которое хотите рассчитать:

select id As parent_id , father_id ,name, count(select name from users WHERE father_id = parent_id) As child 
    from users 
0

Попробуйте использовать предложение group_by.

выберите идентификатор Как parent_id, father_id, имя, граф (* Выберите из пользователей WHERE father_id = PARENT_ID) Как ребенок из группы пользователей по parent_id

2

Вы используете таблицу users дважды. Используйте псевдонимы таблиц, чтобы показать, что запись двух вы говорите о:

select 
    id as parent_id, 
    father_id, 
    name, 
    (select count(*) from users c where c.father_id = p.id) as children 
from users p; 
Смежные вопросы