запрос для посчета количества записей с использованием двух таблиц

krafty

new Exception
запрос для посчета количества записей с использованием двух таблиц

Задача такая: есть две таблицы (пользователи и группы)
Необходимо подсчитать количество пользователей в группе и вывести таблицу "Назв. группы|Кол-во польз-лей".
Делаю так:
[sql]
select groups.name,count(*) from groups
left join users ON groups.id=users.user_group group by groups.name
[/sql]
Все правильно считает. Но если в таблице groups есть группы без пользователей, то этот запрос выдает 1.
Пробывал перестраивать запрос - получаются только ошибки.
 

krafty

new Exception
вот так правильно считает
[sql]
select groups.name,count(users.user_group) from groups
left join users ON groups.id=users.user_group group by groups.name
[/sql]
а как без джоина не знаю:(
 

Steamroller

Новичок
А, если нули нужны там где нету юзеров - то да, с left join надо, так как ты написал.
 

jenia

Новичок
Приведённый запрос выдаёт результат без групп, где нет пользователей. Такого же результата можнодостичь так:

SELECT groups.name, count(users.user_group)
FROM groups, users
WHERE groups.id = users.user_group
GROUP BY groups.name;

А вот как сделать так, чтобы в тех группах, где нет юзеров выводился 0, я так и не понял.

-~{}~ 05.04.06 23:21:

Может кто-то пояснит?
 

zerkms

TDD infected
Команда форума
jenia
смотри на 3 поста выше мессадж от krafty

krafty
а как без джоина не знаю
а чем тебе не угодил left join собственно то?

ps: у тебя 1 пользователь может быть только в одной группе?
 

jenia

Новичок
Посты я все прочитал. Ты попробуй воспользоватся запросом с left join. Он не выдаёт группы в которых нет пользователей. А нужно, чтобы выдавал все группы, там где есть пользователи писал их количество, а там, где нет - ноль.
 

zerkms

TDD infected
Команда форума
jenia
почитай мануал по теме очень внимательно. (left join)
 

jenia

Новичок
Да мануал и читать не нужно. Запрос:

SELECT groups.name, count(users.user_group)
FROM groups, users
WHERE groups.id = users.user_group
GROUP BY groups.name;

выдаёт всё правильно. Просто когда я писал сообщение этот же запрос выдавал некорректный результат. Даже незнаю почему.
 
Сверху