select
sportpref.userid, sum(sportpref.weight), sum(hobbypref.weight)
from
sportpref, hobbypref
where
sportpref.sportid = hobbypref.sportid and sportpref.sportid = :ID
group by
user_sport.userid
Как обработать результаты Union?
1. таблица users(userid,name,country и т.д.);
2. таблица user_sport(userid,sportid);
3. таблица user_hobby(userid,hobbyid);
4. таблица sportpref(userid,sportid,weight);
5. таблица hobbypref(userid,hobbyid,weight);
Делаю следующий запрос для оперделенного userid (в примере userid=58 ) :
(SELECT user_sport.userid,SUM(sportpref.weight) FROM user_sport, sportpref WHERE user_sport.sportid=sportpref.sportid AND sportpref.userid=58 AND user_sport.userid<>58 GROUP BY user_sport.userid)
union ALL
(SELECT user_hobby.userid,SUM(hobbypref.weight) FROM user_hobby, hobbypref WHERE user_hobby.hobbyid=hobbypref.hobbyid AND hobbypref.userid=58 AND user_hobby.userid<>58 GROUP BY user_hobby.userid)
В результате запроса получаю список состоящий из двух кусков - просумированные по weight сопрадения из таблицы user_sport и просумированные по weight сопрадения из таблицы user_hobby. Список имеет два поля userid и SUM(weight).
Проблема: как можно в результирующим списке всего этого запроса сделать GROUP BY userid и SUM по weight?
Подскажите плиз, если кто разбирается...
Спасибки.
Цитата:
Originally posted by vov4ik
Проблема: как можно в результирующим списке всего этого запроса сделать GROUP BY userid и SUM по weight?
Проблема: как можно в результирующим списке всего этого запроса сделать GROUP BY userid и SUM по weight?
Похоже больше на сложение метров с килограммами, но тем не менее:
Код:
Кстати, почему в оригинальном запросе дается сравнение на равно и не равно userid с 58, я так и не понял.