Dreanilamaster 0 Опубликовано 16 марта, 2014 (изменено) Ищу помощи в создание сложного 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 ; Изменено 16 марта, 2014 пользователем Dreanilamaster Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Ksardasok 149 Опубликовано 17 марта, 2014 (изменено) update spawnlist set npc_templateid='50000' where npc_templateid in(select id from npc where level<40); delete from npc where level<40; Как-то так. Изменено 17 марта, 2014 пользователем Ksardasok 1 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Dreanilamaster 0 Опубликовано 17 марта, 2014 update spawnlist set npc_templateid='50000' where npc_templateid in(select id from npc where level<40); delete from npc where level<40; Как-то так. благодарю, попробую так. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Ksardasok 149 Опубликовано 17 марта, 2014 благодарю, попробую так. Напишите результат. 2 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Dreanilamaster 0 Опубликовано 17 марта, 2014 Напишите результат. Работает, Здорово! Ух спасибо!) Тему можно закрывать Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты