• Страница 1 из 1
  • 1
Архив - только для чтения
Модератор форума: andycrowz  
помощь с запросом по удалению персонажей
Aleksrims
Рыцарь
Всем привет, нужен запрос на удаление персонажей, но с двумя одновременно выполняемыми условиями:
1) Удалится должны те кто не заходил допустим больше 100 дней.
2) Общее время игры этим персонажем менее 3 часов.
Обязательно нужно, чтобы оба условия были выполнены. Заранее спасибо за помощь.
2.4.3 - Кастомные квесты, нпс, эвенты. Писать в ЛС или aleksrims@gmail.com
Сообщение # 1 написано 10.11.2012 в 22:16
Flaker
Сержант
Удалить нужно только с таблицы чаров или со всех других?
Сообщение # 2 написано 10.11.2012 в 23:58
Aleksrims
Рыцарь
ну вообще конечно лучше чтобы весь мусор от чаров удалить тоже, но это уже можно и потом сделать.
2.4.3 - Кастомные квесты, нпс, эвенты. Писать в ЛС или aleksrims@gmail.com
Сообщение # 3 написано 11.11.2012 в 00:49
Прадмур
~
Quote (Aleksrims)
ну вообще конечно лучше чтобы весь мусор от чаров удалить тоже, но это уже можно и потом сделать.

Ну, если собрался делать это потом, то запрос:
Quote
DELETE FROM characters WHERE (UNIX_TIMESTAMP() - logout_time) > 8640000 AND totaltime < 10800;

Он удалит персонажей которыми заходили более ста дней назад и играли за персонажа менее трёх часов. Хотя не знаю зачем тут условие про три часа. Ведь если игрок заходил так давно, то он уже точно не вернётся, хоть и играл больше трёх часов.

Что бы удалить весь мусор, которого окажется не мало, потребуется ещё нескольких десятков запросов. Просто так писать такое количество тестируя и сверяясь с базой - не хочется. Если есть желание, то можешь отписать мне в скайп и мы обсудим условия компенсации моего времени.
Сообщение # 4 написано 11.11.2012 в 03:18
Aleksrims
Рыцарь
Прадмур, Спасибо за запрос, по поводу условия в 3 часа, мне часто пишут люди которые играли полгода и более назад и интересуются на месте ли их персонаж, всякие ситуации бывают у людей.

К вопросу по поводу мусора, насколько я понимаю после применения этого запроса, можно будет применить следующие для очистки:
Quote

DELETE FROM `character_action` where guid not in (select guid from `characters`);
DELETE FROM `character_aura` where guid not in (select guid from `characters`);
DELETE FROM `character_gifts` where guid not in (select guid from `characters`);
DELETE FROM `character_homebind` where guid not in (select guid from `characters`);
DELETE FROM `character_inventory` where guid not in (select guid from `characters`);
DELETE FROM `character_pet` where owner not in (select guid from `characters`);
DELETE FROM `character_queststatus` where guid not in (select guid from `characters`);
DELETE FROM `character_reputation` where guid not in (select guid from `characters`);
DELETE FROM `character_social` where guid not in (select guid from `characters`);
DELETE FROM `character_spell` where guid not in (select guid from `characters`);
DELETE FROM `character_spell_cooldown` where guid not in (select guid from `characters`);
DELETE FROM `character_ticket` where guid not in (select guid from `characters`);
DELETE FROM `character_tutorial` where account not in (select account from `characters`);
DELETE FROM `corpse` where `player` not in (select guid from `characters`);
DELETE FROM `character_inventory` where guid not in (SELECT guid FROM `characters`);
DELETE FROM `item_instance` where owner_guid not in (SELECT guid FROM `characters`);

Поправьте меня, если я не прав.
2.4.3 - Кастомные квесты, нпс, эвенты. Писать в ЛС или aleksrims@gmail.com
Сообщение # 5 написано 11.11.2012 в 07:28
Прадмур
~
Можно. Если тебе нужно удалить все вещи у персонажей.
Конкретно этот запрос:
Quote (Aleksrims)
DELETE FROM `item_instance` where owner_guid not in (SELECT guid FROM `characters`);
всё испортит.

Также запрос к character_pet выполнится с ошибкой.
Таблиц character_ticket, character_tutorial не существует, есть gm_tickets и account_tutorial соответственно.

Остальные можно выполнить, но этого мало. Это не все таблицы.
Сообщение # 6 написано 11.11.2012 в 09:07
  • Страница 1 из 1
  • 1
Поиск: