Перейти к содержанию
Авторизация  
Dreanilamaster

Сложный Sql Запрос

Рекомендуемые сообщения

Ищу помощи в создание сложного sql запроса (возможно нескольких).

Необходимо у стопки определенных NPC в spawnlist заменить их ID на всего одного NPC.

 

Детальнее по порядку:

1) Находим стопку NPC с например значением их LVL меньше 40

2) В Spawnlist этих найденных NPC параметр npc_templateid у всех заменяем на всего одного NPC допустим id 50000

3) Оригинальные NPC из первого пункта удаляем (у которых LVL < 40).

 

Буду признателен за любую помощь и подсказки!

 

Структура таблицы Npc:

CREATE TABLE IF NOT EXISTS `npc` (
`id` decimal(11,0) NOT NULL DEFAULT '0',
`idTemplate` int(11) NOT NULL DEFAULT '0',
`name` varchar(200) DEFAULT NULL,
`serverSideName` int(1) DEFAULT '0',
`title` varchar(45) DEFAULT '',
`serverSideTitle` int(1) DEFAULT '0',
`class` varchar(200) DEFAULT NULL,
`collision_radius` decimal(5,2) DEFAULT NULL,
`collision_height` decimal(5,2) DEFAULT NULL,
`level` decimal(2,0) DEFAULT NULL,
`sex` varchar(6) DEFAULT NULL,
`type` varchar(20) DEFAULT NULL,
`attackrange` int(11) DEFAULT NULL,
`hp` decimal(8,0) DEFAULT NULL,
`mp` decimal(5,0) DEFAULT NULL,
`hpreg` decimal(8,2) DEFAULT NULL,
`mpreg` decimal(5,2) DEFAULT NULL,
`str` decimal(7,0) DEFAULT NULL,
`con` decimal(7,0) DEFAULT NULL,
`dex` decimal(7,0) DEFAULT NULL,
`int` decimal(7,0) DEFAULT NULL,
`wit` decimal(7,0) DEFAULT NULL,
`men` decimal(7,0) DEFAULT NULL,
`exp` decimal(9,0) DEFAULT NULL,
`sp` decimal(8,0) DEFAULT NULL,
`patk` decimal(5,0) DEFAULT NULL,
`pdef` decimal(5,0) DEFAULT NULL,
`matk` decimal(5,0) DEFAULT NULL,
`mdef` decimal(5,0) DEFAULT NULL,
`atkspd` decimal(3,0) DEFAULT NULL,
`aggro` decimal(6,0) DEFAULT NULL,
`matkspd` decimal(4,0) DEFAULT NULL,
`rhand` decimal(4,0) DEFAULT NULL,
`lhand` decimal(4,0) DEFAULT NULL,
`armor` decimal(1,0) DEFAULT NULL,
`walkspd` decimal(3,0) DEFAULT NULL,
`runspd` decimal(3,0) DEFAULT NULL,
`faction_id` varchar(40) DEFAULT NULL,
`faction_range` decimal(4,0) DEFAULT NULL,
`isUndead` int(11) DEFAULT '0',
`absorb_level` decimal(2,0) DEFAULT '0',
`absorb_type` enum('FULL_PARTY','LAST_HIT','PARTY_ONE_RANDOM') NOT NULL DEFAULT 'LAST_HIT',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

 

Структура таблицы Spawnlist:

CREATE TABLE IF NOT EXISTS `spawnlist` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`location` varchar(40) NOT NULL DEFAULT '',
`count` int(9) NOT NULL DEFAULT '0',
`npc_templateid` int(9) NOT NULL DEFAULT '0',
`locx` int(9) NOT NULL DEFAULT '0',
`locy` int(9) NOT NULL DEFAULT '0',
`locz` int(9) NOT NULL DEFAULT '0',
`randomx` int(9) NOT NULL DEFAULT '0',
`randomy` int(9) NOT NULL DEFAULT '0',
`heading` int(9) NOT NULL DEFAULT '0',
`respawn_delay` int(9) NOT NULL DEFAULT '0',
`loc_id` int(9) NOT NULL DEFAULT '0',
`periodOfDay` decimal(2,0) DEFAULT '0',
PRIMARY KEY (`id`),
KEY `key_npc_templateid` (`npc_templateid`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=191271 ;

Изменено пользователем Dreanilamaster

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

update spawnlist set npc_templateid='50000' where npc_templateid in(select id from npc where level<40);

delete from npc where level<40;

Как-то так.

Изменено пользователем Ksardasok
  • Upvote 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

update spawnlist set npc_templateid='50000' where npc_templateid in(select id from npc where level<40);

delete from npc where level<40;

Как-то так.

благодарю, попробую так.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Напишите результат.

Работает, Здорово! Ух спасибо!)

Тему можно закрывать :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
Авторизация  

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×
×
  • Создать...