Вывод значения с базы ( сравнение по дате ) - MySQL
Формулировка задачи:
Добрый день вот столкнулся с проблемой.
Есть одна база игрового сервера в которой таблица "history" (история) в которую заносится история игрового сервера.
Структура:
И есть другая база статистика игроков игрового сервера в которой по раундам выводится статистика (игровые показатели) обновление которой происходит по смене карты на игровом сервере. Здесь тоже есть дата и время но в другом формате.
Задача создать запрос сравнения по дате и с выводом названия карты. То есть вывести название карты с 1 базы при этом сравнивая даты двух баз.
ID | map | time |
1 | de_dust2002 | 1461589869 |
1 | de_dust2 | 1461587951 |
1 | de_cbble | 1461585552 |
1 | de_inferno | 1461583751 |
... | ... | ...и тд |
ID | Ник | Ранг | Скилл | Раунд | Дата |
1 | Коля | 1 | 200 | 456 | 04.04.2016 02:50:13 |
1 | Коля | 3 | 196 | 457 | 04.04.2016 02:53:14 |
1 | Коля | 5 | 142 | 458 | 04.04.2016 02:54:43 |
1 | Коля | 1 | 200 | 459 | 04.04.2016 02:55:15 |
1 | Коля | 3 | 196 | 460 | 04.04.2016 02:55:53 |
То есть на странице статистики игроков в таблицу статистики по картам вывести название карты сравнивая дату двух баз.
Решение задачи: «Вывод значения с базы ( сравнение по дате )»
textual
Листинг программы
//HISTORY TIME $_time=$r['history_time']; if(config('collect_history','gaming')) { if($cache['b']['status'] and $_time<(time()-1800)) { $_time=time(); MainClass::$db->query('INSERT INTO `lm_history` (`sid`,`map`,`rang`,`players`,`time`) VALUES (\''.$r['id'].'\',\''.$cache['s']['map'].'\',\''.cacheRang($r['id']).'\',\''.$cache['s']['players'].'\',\''.$_time.'\')'); } } //Filter $cache['s']['map']=strtolower((string)$cache['s']['map']); //UPDATE CACHE MainClass::$db->query('UPDATE `lm_list` SET `country`=\''.($r['country']?$r['country']:$country).'\',`last_con`=\''.($cache['b']['status']?time():$r['last_con']).'\',`map`=\''.$cache['s']['map'].'\',`status`=\''.(int)$cache['b']['status'].'\',`cache`=\''.MainClass::$db->escapeString(serialize($cache)).'\',`cache_time`=\''.time().'\',`history_time`=\''.$_time.'\' WHERE `id`=\''.(int)$r['id'].'\' LIMIT 1'); }
Объяснение кода листинга программы
Код выполняет следующие действия:
- Сохраняет время из базы данных в переменную $_time.
- Проверяет, включена ли сборка истории для игр.
- Проверяет, существует ли кэш и прошло ли время кэша более 1800 секунд.
- Если условия выполняются, обновляет время в кэше и выполняет запрос на вставку записи в таблицу
lm_history
. - Применяет фильтр к значению карты в кэше.
- Обновляет запись в таблице
lm_list
, устанавливая значения страны, последнего контакта, карты, статуса, кэша, времени кэша и времени истории в соответствии с сохраненными значениями. - Ограничивает обновление одной записью на основе id. Список переменных и их значений:
- $_time - время из базы данных
- $r['history_time'] - время последней записи в истории
- $cache['b']['status'] - статус базы данных (true или false)
- $cache['s']['map'] - текущая карта
- $cache['s']['players'] - количество игроков в текуной игре
- $cache['b']['status'] - статус базы данных (true или false)
- $country - название страны, если не установлено, используется значение по умолчанию
- $r['country'] - название страны из базы данных
- $r['last_con'] - время последнего контакта
- $cache['s']['map'] - текущая карта в нижнем регистре
- $r['id'] - уникальный идентификатор записи
- $cache['b']['status'] - статус базы данных (true или false)
- $cache['s']['map'] - текущая карта
- $cache['s']['players'] - количество игроков в текучной игре
- $cache['b']['status'] - статус базы данных (true или false)
- $r['id'] - уникальный идентификатор записи
- $country - название страны, если не установлено, используется значение по умолчанию
- $r['last_con'] - время последнего контакта
- $cache['s']['map'] - текущая карта в нижнем регистре
- $_time - время из базы данных
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д