2012-05-10 3 views
0

У меня есть таблица "tree".Mysql multiple COUNT и присоединяется

У меня есть запрос: SELECT * FROM дерево WHERE PID =10 Этот запрос возвращает 10 пунктов.

Я хочу, чтобы получить что-то подобное, что в результате:

id | pid | title | subElements 
11 | 10 | t 1 | 12 
12 | 10 | t 2 | 16 
13 | 10 | t 3 | 0 
... 

Как построить тоже присоединиться запрос для подсчета подпунктов для этого 10 пунктов?

+0

Это не возможно в одном запросе – zerkms

+0

Хорошо, но сколько запросов мне нужно сделать, чтобы получить количество субэлементов для этого 10 пунктов? – Mirgorod

+0

Это зависит от глубины – zerkms

ответ

1

попробовать это:

SELECT t1.id, t1.pid, t1.title , count(t2) as subElements FROM tree as t1 
LEFT JOIN tree as t2 ON t2.pid = t1.id 
WHERE t1.pid=10 
GROUP BY t1.id, t1.pid, t1.title 
+0

Это древовидная структура с неизвестной глубиной – zerkms

+0

Я попробовал это на одной из моих таблиц (сменил INNER JOIN на LEFT JOIN), и это сработало. Моя таблица также имеет неизвестную глубину pid – amaters

+0

и как этот запрос должен выполнять рекурсивный переход по дереву? PS: Я даже не упоминаю, что 'WHERE' находится в неправильном месте и что' COUNT (t2) 'вызовет ошибку – zerkms

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