Новости
Документация
Download
Webboard
Поиск
FAQ/ЧаВо
Обратная связь




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, версию программного обеспечения, по которому возникает вопрос, текст возникающих ошибок, и др.)
Помните, чем конкретнее Вы опишете ситуацию, тем больше шансов получить реальную помощь.
 Имя:
 E-mail:
 Тема:
 Текст:
Код подтверждения отправки: Code
1066



РЕКЛАМА НА САЙТЕ
  Создание сайтов | |