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