Новости
Документация
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



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

Работает намного быстрее, но не нашёл способа выбрать именно последнюю запись из статистики.

В общем голова кипит и не соображает, помогите кому не лень, буду очень благодарен =)


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

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

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



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