Сложный запрос на 3 таблицы взрывает мой мозг

gl0om

Новичок
Сложный запрос на 3 таблицы взрывает мой мозг

Здравствуйте.

Есть 3 таблицы:
1. Пользователи users (id, имя)
2. Принадлежность пользователя к категории userprofessions (id, uid - это id юзера, sid - это id категории)
3. Рейтинг пользователей userrate (id, uid - это id юзера, points - очки)

Задача:
Выбрать всех пользователей попадающих под какую то одну категорию и получить их рейтинг, сортировать по рейтингу по возрастанию.

Есть такой запрос:
PHP:
select users.*, sum(userrate.points) as summ
								FROM users, userrate, userprofessions
								WHERE users.id = userprofessions.uid and userprofessions.sid = $myrequest[2]
										and users.id = userrate.uid
								GROUP by users.id 
								ORDER by summ desc, id asc
Вобщем - это почти рабочий вариант, правда есть одно НО. Если за юзера никто не голосовал (таблица userrate не содержит записи с uid = id пользователя), то в выборку этот пользователь не попадает. А хотелось бы вывести всех, даже тех за кого не голосовали.

Реально ли сделать такой запрос? Или проще автоматом каждому пользователю ставить одну оценку по умолчанию и в потом ее в списках голосовавших не учитывать?
 

gl0om

Новичок
Спасибо большое. Вроде справился.

Вот что вышло с запросом. Проконтролируйте пожалуйста, вдруг я как-то криво написал.

PHP:
select users.*, sum(userrate.points) as summ
								FROM userprofessions, users
								LEFT JOIN userrate ON users.id = userrate.uid
								WHERE userprofessions.sid = $myrequest[2] and users.type = 2 and users.id = userprofessions.uid							
								GROUP by users.id 
								ORDER by summ desc, id asc
 

Gas

может по одной?
gl0om
Отлично. А то не многие, задающие такие такие вопросы, способны сделать "это", прочитав данную ссылку.
Только желательно (не обязательно) объединение таблиц указывать не через запятую, а через join.
 
Сверху