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




MySQL.RU - Webboard



Вернуться
Сложный запрос (Дмитрий) 17/10/2013 - 14:02:09
      Re: Сложный запрос (Akina) 17/10/2013 - 14:43:32
      Re: Сложный запрос (Дмитрий) 17/10/2013 - 14:50:38



From: Дмитрий - 17/10/2013 - 14:02:09
Subject:Сложный запрос
-----------------
Сначала опишу текстом: есть таблица пользователей A и есть таблица событий с ними E. Нужно выбрать пользователей, которые зарегистрированы в определённое время и давно не заходили, а так же последнее событие, к которое с ними происходило. Но событие не какое угодно, а из определённого списка.
Таблицы вот такие:

пользователи
CREATE TABLE IF NOT EXISTS `h_accounts` (
`id` int(11) NOT NULL,
`register` int(10) unsigned NOT NULL COMMENT 'таймптамп регистрации',
`session` int(10) unsigned NOT NULL COMMENT 'таймштамп сессии',
PRIMARY KEY (`id`),
KEY `register` (`register`),
KEY `session` (`session`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

события
CREATE TABLE IF NOT EXISTS `h_events` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`id_acc` int(11) NOT NULL COMMENT 'ид аккаунта',
`name` varchar(255) NOT NULL COMMENT 'имя события',
`value` int(11) NOT NULL COMMENT 'число (опция)',
`ts` int(10) unsigned NOT NULL COMMENT 'время наступления, таймштамп',
PRIMARY KEY (`id`),
KEY `id_acc` (`id_acc`,`name`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=5820743 ;

id_acc в таблице событий это id из таблицы пользователей.
Запрос примерно такой:
SELECT H1.id AS id, H2.`name` AS `name`, H2.`value` AS `value`
FROM
h_accounts H1
JOIN h_events H2 ON H1.id=H2.id_acc
WHERE H1.register BETWEEN 1381656703 AND 1381743103
AND H1.session<1381829503 AND H2.`name` in('quest end', 'tut step', 'level end')
Но этот запрос выводит вообще все события, а мне нужно только последнее, у которого максимальный ts, оно получается примерно так
SELECT `name`, `value` FROM h_events WHERE id_acc=123 AND `name` in('quest end', 'tut step', 'level end') ORDER BY `ts` DESC LIMIT 0, 1
Как будет правильно это сделать?


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

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

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



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