|
MySQL.RU - Webboard
Вернуться
JOIN и GROUP BY (alexis) 07/12/2001 - 11:35:44
Re: JOIN и GROUP BY (Василий) 07/12/2001 - 12:33:24
Re: JOIN и GROUP BY (alexis) 08/12/2001 - 15:12:13
From: alexis - 07/12/2001 - 11:35:44
Subject:JOIN и GROUP BY
-----------------
Дано. Есть следующие таблицы с полями. (примерно)
PLAYER_IN_GAME (участие игрока в игре)
idgame
idplayer
GOAL (голы)
idgame
idplayer
PENALTY (удаления)
idgame
idplayer
min (минуты удаления)
Задача - хочется одним запросом выбрать по конкретному idplayer количество его игр сумму минут удаления в конкретном idgame. Главное - хочется одним запросом все. :)
Смысл в том, что в GOAL одна запись - один гол. В PENALTY тоже самое. Т.о. теоретически как бы в этих таблицах по конкретной idgame и idplayer записи могут и не существовать, а может быть их и больше чем одна (игрок удалялся больше раза или забивал больше одного гола).
В общем была идея использовать JOIN и GROUP BY. Но проблема. Если писать запрос примерно так:
select count(goal.idgame), sum(penalty.min)
from player_in_game pig
left join goal on
goal.idgame=pig.idgame and
goal.idplayer=pig.idplayer
left join penalty on
penalty.idgame=pig.idgame and
penalty.idplayer=pig.idplayer
where
pig.idgame= (...) and
pig.idplayer= (...)
group by idgame, idplayer
то не выйдет, т.к. если например в goal по этой игре у игрока 1 гол (1 запись), а в penalty скажем 2 (2 записи), то при подсчете sum(min) получается корректная, а вот count() равно 2. Почему так происходит я понимаю, объяснять не надо. Нужно идея, может кто-то подскажет как побороть это дело?
Главное повтряю - интересно мнение существует ли решение в один запрос. Темпорари табле тоже не предлагать. :)
[Это сообщение - спам!]
Последние сообщения из форума
Уважаемые посетители форума MySQL.RU!
Убедительная просьба, прежде чем задавать свой вопрос в этом форуме, обратите внимание на разделы:
- ответы на наиболее часто задаваемые вопросы - FAQ
- раздел документация
- раздел поиск по сообщениям форума и документации
Также, старайтесь наиболее подробно указывать свою ситуацию (версию операционной системы, версию MySQL,
версию программного обеспечения, по которому возникает вопрос, текст возникающих ошибок, и др.)
Помните, чем конкретнее Вы опишете ситуацию, тем больше шансов получить реальную помощь.
1066
|
|