Перевод тем объектам, у которых нет перевода, но есть объекты с аналогичным полем `name` или `castBarCaption` и переводом: #добавляем недостающие записи
INSERT IGNORE INTO
`locales_gameobject` (`entry`, `name_loc8`, `castbarcaption_loc8`)
SELECT
`entry`, '', ''
FROM
`gameobject_template`;
#проставляем name_loc8
ALTER TABLE `gameobject_template` ADD INDEX (`name`(100));
ALTER TABLE `gameobject_template` ADD INDEX (`name`(100),`entry`);
ALTER TABLE `locales_gameobject` ADD INDEX (`name_loc8`(100));
ALTER TABLE `locales_gameobject` ADD INDEX (`entry`,`name_loc8`(100));
UPDATE
`gameobject_template`, `locales_gameobject`,
`gameobject_template` AS `gt`, `locales_gameobject` AS `lg`
SET
`locales_gameobject`.`name_loc8`=`lg`.`name_loc8`
WHERE
`locales_gameobject`.`entry`=`gameobject_template`.`entry`
AND `lg`.`entry`=`gt`.`entry`
AND `gameobject_template`.`name`=`gt`.`name`
AND `gameobject_template`.`entry`!=`gt`.`entry`
AND `lg`.`name_loc8`!=`gt`.`name`
AND `lg`.`name_loc8`!=''
AND (`locales_gameobject`.`name_loc8`=`gameobject_template`.`name`
OR `locales_gameobject`.`name_loc8`='');
ALTER TABLE `gameobject_template` DROP INDEX `name`;
ALTER TABLE `gameobject_template` DROP INDEX `name_2`;
ALTER TABLE `locales_gameobject` DROP INDEX `name_loc8`;
ALTER TABLE `locales_gameobject` DROP INDEX `entry`;
#проставляем castbarcaption_loc8
ALTER TABLE `gameobject_template` ADD INDEX (`castBarCaption`(100));
ALTER TABLE `gameobject_template` ADD INDEX (`castBarCaption`(100),`entry`);
ALTER TABLE `locales_gameobject` ADD INDEX (`castbarcaption_loc8`(100));
ALTER TABLE `locales_gameobject` ADD INDEX (`entry`,`castbarcaption_loc8`(100));
UPDATE
`gameobject_template`, `locales_gameobject`,
`gameobject_template` AS `gt`, `locales_gameobject` AS `lg`
SET
`locales_gameobject`.`castbarcaption_loc8`=`lg`.`castbarcaption_loc8`
WHERE
`locales_gameobject`.`entry`=`gameobject_template`. `entry`
AND `lg`.`entry`=`gt`.`entry`
AND `gameobject_template`.`castBarCaption`=`gt`.`castBarCaption`
AND `gameobject_template`.`entry`!=`gt`.`entry`
AND `lg`.`castbarcaption_loc8`!=`gt`.`castBarCaption`
AND `lg`.`castbarcaption_loc8`!=''
AND (`locales_gameobject`.`castbarcaption_loc8`=`gameobject_template`.`castBarCaption`
OR `locales_gameobject`.`castbarcaption_loc8`='');
ALTER TABLE `gameobject_template` DROP INDEX `castBarCaption`;
ALTER TABLE `gameobject_template` DROP INDEX `castBarCaption_2`;
ALTER TABLE `locales_gameobject` DROP INDEX `castbarcaption_loc8`;
ALTER TABLE `locales_gameobject` DROP INDEX `entry`;
#удаляем лишние записи
DELETE
`locales_gameobject`
FROM
`gameobject_template`, `locales_gameobject`
WHERE
`locales_gameobject`.`entry`=`gameobject_template`.`entry`
AND (`locales_gameobject`.`name_loc8`=`gameobject_template`.`name`
OR `locales_gameobject`.`name_loc8`='');
#проверяем недостающие записи
#name_loc8
SELECT
`gt`.`entry`, `gt`.`name`, COUNT(`gt`.`name`) AS `cnt_gt`, `lg`.`name_loc8`, COUNT(`lg`.`name_loc8`) AS `cnt_lg`
FROM
`gameobject_template` AS `gt`
LEFT JOIN
(`locales_gameobject` AS `lg`)
ON
(`lg`.`entry`=`gt`.`entry`)
GROUP BY
`gt`.`name`
HAVING
`cnt_lg`>0
AND `cnt_gt`>`cnt_lg`;
#castbarcaption_loc8
SELECT
`gt`.`entry`, `gt`.`castBarCaption`, COUNT(`gt`.`castBarCaption`) AS `cnt_gt`, `lg`.`castbarcaption_loc8`, COUNT(`lg`.`castbarcaption_loc8`) AS `cnt_lg`
FROM
`gameobject_template` AS `gt`
LEFT JOIN
(`locales_gameobject` AS `lg`)
ON
(`lg`.`entry`=`gt`.`entry`)
GROUP BY
`gt`.`castBarCaption`
HAVING
`cnt_lg`>0
AND `cnt_gt`>`cnt_lg`;