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




MySQL.RU - Webboard



Вернуться
Один ко многим + LIMIT (esemi) 26/06/2011 - 21:24:43
      Re: Один ко многим + LIMIT (esemi) 26/06/2011 - 21:43:35
      Re: Один ко многим + LIMIT (Akina) 27/06/2011 - 09:20:07
      Re: Один ко многим + LIMIT (esemi) 28/06/2011 - 13:03:30
      Re: Один ко многим + LIMIT (Akina) 28/06/2011 - 19:58:38

> Original message text:
> From: esemi - 26/06/2011 - 21:24:43
> Subject:Один ко многим + LIMIT
> -----------------
> Всем доброго вечера. Прошу помощи, поскольку голова закипает =(
>
> Итак:
> есть 2 таблицы, связь "один ко многим".
> Игроки и статистика по ним.
>
> Players
> id (int)
> nik (str)
>
> Stat
> id (bigint)
> id_player (int) ВК
> date (DATETIME)
>
> На одного игрока до 400 записей статистики.
>
> Задача: выбрать игроков из таблички Players (там много условий) и последнюю (по дате) запись статистики по каждому игроку.
>
> Проблема: не могу выбрать последнюю запись =(
>
> Испробованные варианты:
>
> Сперва испробовал вложенные селекты
>
> SELECT pl.id, st.id_player, pl.`date_upd` , st.date_create
> FROM `players` pl, stat st
> WHERE pl.`id_world` =1
> AND pl.status = 'active'
> AND st.id = (
> SELECT id
> FROM stat_players
> WHERE id_player = pl.id
> ORDER BY date_create DESC
> LIMIT 1 )
>
> Запрос работает как нужно, но очень долго, несмотря на индексы по всем полям.
>
> Потом попробовал LEFT JOIN + GROUP BY
>
> SELECT pl.id, st.id_player, pl.`date_upd` , st.date_create
> FROM `players` pl
> LEFT JOIN stat st ON ( st.id_player = pl.id )
> WHERE pl.`id_world` =1
> AND pl.status = 'active'
> GROUP BY pl.id
>
> Работает намного быстрее, но не нашёл способа выбрать именно последнюю запись из статистики.
>
> В общем голова кипит и не соображает, помогите кому не лень, буду очень благодарен =)
>


From: esemi - 26/06/2011 - 21:43:35
Subject:Один ко многим + LIMIT
-----------------
напишу пример данных и что хотелось бы получить

Players
id nik
1 вася
2 петя
3 юра
4 тотпарень

Stat
id id_player date
1 1 12.01.2011
2 1 13.01.2011
3 1 14.01.2011
4 2 11.01.2011
5 2 12.01.2011
6 2 13.01.2011
7 2 14.01.2011
8 3 12.01.2011
9 3 13.01.2011

Из этого мне нужно получить выборку
pl.id st.id
1 3
2 7
3 9
4 NULL


[Это сообщение - спам!]

Последние сообщения из форума

Уважаемые посетители форума MySQL.RU!
Убедительная просьба, прежде чем задавать свой вопрос в этом форуме, обратите внимание на разделы:
- ответы на наиболее часто задаваемые вопросы - FAQ
- раздел документация
- раздел поиск по сообщениям форума и документации
Также, старайтесь наиболее подробно указывать свою ситуацию (версию операционной системы, версию MySQL, версию программного обеспечения, по которому возникает вопрос, текст возникающих ошибок, и др.)
Помните, чем конкретнее Вы опишете ситуацию, тем больше шансов получить реальную помощь.
 Имя:
 E-mail:
 Тема:
 Текст:
Код подтверждения отправки: Code
38762



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