выбор из нескольких таблиц mysql

Статус
В этой теме нельзя размещать новые ответы.

sam7i

Создатель
Регистрация
15 Окт 2007
Сообщения
24
Реакции
8
Пытаюсь сделать запрос:

таблица a (id, name)
таблица b (userid, rating)

нужно выбрать 2 поля - имя + сумма рейтинга

пробовал типа select a.name, sum(SELECT rating FROM b WHERE userid=a.id) as urating from a, b

но чтото явно не правильно...
 
SELECT id, SUM( `rating` )
FROM test1 a, test2 b
WHERE a.id = b.userid
GROUP BY id

test1 - содержит id, name
test2 - userid, rating
 
или же с конструкцией join

SELECT t1.id, SUM(t2.rating)
FROM a AS t1
LEFT JOIN a AS t2 ON t1.id=t2.userid
GROUP BY t1.id
 
SELECT id, SUM( `rating` )
FROM test1 a, test2 b
WHERE a.id = b.userid
GROUP BY id

test1 - содержит id, name
test2 - userid, rating

В этом запросе недочёт. Если у пользователя не будет рейтинга этот пользователь не выводится вообще
 
Не понял ниче )
 
В этом запросе недочёт. Если у пользователя не будет рейтинга этот пользователь не выводится вообще

Внимательно посмотрите пост №3 edison. Конструкция LEFT JOIN вытащит из таблицы "a" все записи, и сопоставит их только с теми записями из "b", у которых a.id содержится в b.userid. Если игрок есть в "a", но отсутствует в "b", у него будет нулевой рейтинг.

Обращаю так же внимание, что у edison очепятка. Правильно так:

Код:
SELECT t1.id, SUM(t2.rating)
FROM a AS t1
LEFT JOIN [U][B]b[/B][/U] AS t2 ON t1.id=t2.userid
GROUP BY t1.id
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху