Страница: 1 |
Страница: 1 |
Вопрос: count() из 2 связанных таблиц
Добавлено: 24.05.10 19:12
Автор вопроса: Самат
Есть две связанные таблицы. Как взять данные из первой таблицы и количество "детей" к каждой ее строке из второй таблицы?
Пробовал так:
SELECT table1.title, count(table2.id) AS child_count FROM table1 INNER JOIN table2 ON table1.id = table2.parent_id GROUP BY table2.id, table1.title
Но это не подходит, так как если в table2 нет сторк, связанных с table1, то в результате я не получаю child_count со значением 0.
Ответы
Всего ответов: 4
Номер ответа: 1
Автор ответа:
Sharp
Лидер форума
ICQ: 216865379
Вопросов: 106
Ответов: 9979
Web-сайт:
Профиль | | #1
Добавлено: 24.05.10 23:14
left join?
Номер ответа: 2
Автор ответа:
Самат
Вопросов: 10
Ответов: 17
Профиль | | #2
Добавлено: 25.05.10 09:44
Спасибо, попробывал. Но тогда некорректно работает count(). Выводит таблицу, в которой повторяется поле table1.title, a поле child_count у каждой строки либо 0 либо 1.
Чтобы было понятней, запрос
SELECT table1.title, count(table2.id) AS child_count
FROM table1 LEFT JOIN table2 ON table2.parentId = table1.id
GROUP BY table2.id, table1.title;
выводит:
вася, 1;
вася, 1;
вася, 1;
петя, 1;
петя, 1;
маша, 0.
А должен выводить:
вася, 3;
петя, 2;
маша, 0.
Номер ответа: 3
Автор ответа:
Sharp
Лидер форума
ICQ: 216865379
Вопросов: 106
Ответов: 9979
Web-сайт:
Профиль | | #3
Добавлено: 25.05.10 14:30
У меня работает
Номер ответа: 4
Автор ответа:
Самат
Вопросов: 10
Ответов: 17
Профиль | | #4
Добавлено: 27.05.10 11:44
спасибо! теперь у меня тоже работает )
Надо было убрать table1.title из запроса.