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

> Original message text:
> 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
> Как будет правильно это сделать?
>


From: Дмитрий - 17/10/2013 - 14:50:38
Subject:Сложный запрос
-----------------
Не знал, что так можно. Спасибо!


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

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

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



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