DB/Creature: Remove model from creature table if not needed

Closes #24822

(cherry picked from commit 2211610ff7)
This commit is contained in:
offl
2020-06-26 20:14:45 +02:00
committed by Shauren
parent 342754baa3
commit 09ee27d03d

View File

@@ -0,0 +1,25 @@
--
-- set creature.modelid to 0 if creature only has a single model defined in creature_template_model and that model matches value in creature table
CREATE TEMPORARY TABLE creature_guids_with_unique_model SELECT
c.guid
FROM
`creature` c
INNER JOIN (
SELECT
ctm.CreatureDisplayID AS CreatureDisplayID,
ctm.CreatureID AS CreatureID
FROM
creature_template_model ctm
GROUP BY
ctm.CreatureID
HAVING
COUNT(ctm.CreatureDisplayID) = 1
) uniq_models ON c.id = uniq_models.CreatureID
AND c.modelid = uniq_models.CreatureDisplayID;
UPDATE `creature` SET `modelid`=0 WHERE `guid` IN (SELECT * FROM creature_guids_with_unique_model);
-- UPDATE `creature` a LEFT JOIN `creature_template` b ON a.`id` = b.`entry` SET `modelid` = 0 WHERE a.`id` IN (SELECT b.`entry` FROM `creature_template` WHERE b.`modelid1` != 0 AND b.`modelid2` = 0 AND b.`modelid3` = 0 AND b.`modelid4` = 0) AND a.`modelid` = b.`modelid1`;
-- UPDATE `creature` a LEFT JOIN `creature_template` b ON a.`id` = b.`entry` SET `modelid` = 0 WHERE a.`id` IN (SELECT b.`entry` FROM `creature_template` WHERE b.`modelid1` = 0 AND b.`modelid2` != 0 AND b.`modelid3` = 0 AND b.`modelid4` = 0) AND a.`modelid` = b.`modelid2`;
-- UPDATE `creature` a LEFT JOIN `creature_template` b ON a.`id` = b.`entry` SET `modelid` = 0 WHERE a.`id` IN (SELECT b.`entry` FROM `creature_template` WHERE b.`modelid1` != 0 AND b.`modelid2` != 0 AND b.`modelid3` != 0 AND b.`modelid4` != 0) AND (a.`modelid` = b.`modelid1` OR a.`modelid` = b.`modelid2` OR a.`modelid` = b.`modelid3` OR a.`modelid` = b.`modelid4`);
UPDATE `creature` SET `modelid` = 0 WHERE `id`=1505;