powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Выбор позднейшего события с DISTINCT - подскажите
3 сообщений из 3, страница 1 из 1
Выбор позднейшего события с DISTINCT - подскажите
    #39110804
Barvinok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день.
Есть таблица, по сути - лог игровых событий.
тут она в сокращённом виде
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
CREATE TABLE `eventlog` (
	`guid` CHAR(34) NOT NULL COMMENT 'Event GUID',
	`timestamp_raw` BIGINT(20) UNSIGNED NOT NULL COMMENT 'UNIX epoch in milliseconds',
	`timestamp_d` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT 'Timestamp (human-readable)',
	`player_name` VARCHAR(20) NOT NULL COMMENT 'Event origin name',
	`player_guid` CHAR(34) NOT NULL COMMENT 'Event origin GUID',
	`loc1_name` VARCHAR(128) NULL DEFAULT NULL COMMENT 'Loc1 name',
	`loc1_guid` CHAR(35) NULL DEFAULT NULL COMMENT 'Loc1 GUID',
	`event_action` ENUM('CAPTURE','LINK','FIELD') NULL DEFAULT NULL COMMENT 'Event action',
	`plaintext` TEXT NOT NULL COMMENT 'Event plaintext',
	PRIMARY KEY (`guid`),
	INDEX `timeline` (`timestamp_raw`),
	INDEX `player_name_key` (`player_name`),
	INDEX `portal1_name_key` (`loc1_name`),
)
COLLATE='utf8_general_ci'
ENGINE=MyISAM
;


Один из типов событий - захват игроком позиции.
Вот так я запрашиваю все совершённые игроком захваты
Код: sql
1.
SELECT * FROM eventlog WHERE (player_name='playername') AND (event_action='CAPTURE') ORDER BY timestamp_d ASC;


Некоторые игровые позиции он может захватить несколько раз, поэтому если меня интересует захваты одним и тем же игроком одной и той же позиции, я добавляю её guid
Код: sql
1.
SELECT * FROM eventlog WHERE (player_name='playername') AND (event_action='CAPTURE') AND (loc1_guid='192e8e9171434984a4dac800f17b53bb.16') ORDER BY timestamp_d ASC;


Но мне на самом деле надо не это, а список всех когда-либо захваченных игроком позиций, без дубликатов
Код: sql
1.
SELECT DISTINCT loc1_guid FROM eventlog WHERE (player_name='playername') AND (event_action='CAPTURE');


А вот дальше я не знаю что делать, потому что мне этот список нужен с датой самого недавнего захвата.
Если я делаю вот так
Код: sql
1.
SELECT DISTINCT loc1_guid,timestamp_d FROM eventlog WHERE (player_name='playername') AND (event_action='CAPTURE') GROUP BY loc1_guid ASC;


то показывает список захваченных, без дубликатов, но с датой самого первого захвата каждой позиции. А надо - последнего :(
Подскажите, пожалуйста.
...
Рейтинг: 0 / 0
Выбор позднейшего события с DISTINCT - подскажите
    #39110851
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SELECT loc1_guid, MAX(timestamp_d)
FROM eventlog
WHERE (player_name='playername') AND (event_action='CAPTURE')
GROUP BY loc1_guid;
...
Рейтинг: 0 / 0
Выбор позднейшего события с DISTINCT - подскажите
    #39110861
Barvinok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
спасибо большое!
как всё просто, оказывается...
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Выбор позднейшего события с DISTINCT - подскажите
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]