Joywork/sql/users_fio.sql

54 lines
2.8 KiB
MySQL
Raw Permalink Normal View History

2026-05-22 20:21:54 +02:00
ALTER TABLE `users`
ADD `agency_name` VARCHAR(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT 'Название АН' AFTER `fio`,
ADD `last_name` VARCHAR(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT 'Фамилия сотрудника' AFTER `agency_name`,
ADD `first_name` VARCHAR(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT 'Имя сотрудника' AFTER `last_name`,
ADD `middle_name` VARCHAR(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT 'Отчество сотрудника' AFTER `first_name`;
UPDATE `users` SET `agency_name` = '', `last_name` = '', `first_name` = '', `middle_name` = '';
UPDATE `users` SET `agency_name` = `fio` WHERE `agency` = 1;
UPDATE users AS `users`
INNER JOIN (
SELECT
`u`.`id`,
SUBSTRING_INDEX(`u`.`director`, ' ', 1) AS `l_name`,
IF(
SUBSTRING_INDEX(SUBSTRING_INDEX(`u`.`director`, ' ', 2), ' ', -1) = SUBSTRING_INDEX(`u`.`director`, ' ', 1),
'',
SUBSTRING_INDEX(SUBSTRING_INDEX(`u`.`director`, ' ', 2), ' ', -1)
) AS `f_name`,
IF(
SUBSTRING_INDEX(SUBSTRING_INDEX(`u`.`director`, ' ', -1), ' ', -1) = SUBSTRING_INDEX(SUBSTRING_INDEX(`u`.`director`, ' ', 2), ' ', -1),
'',
SUBSTRING_INDEX(SUBSTRING_INDEX(`u`.`director`, ' ', -1), ' ', -1)
) AS `m_name`
FROM `users` AS `u` WHERE `u`.`agency` = 1 AND `u`.`director` != '' GROUP BY `u`.`id`
) AS `directors` ON `directors`.`id` = `users`.id
SET `users`.`last_name` = `directors`.`l_name`,
`users`.`first_name` = `directors`.`f_name`,
`users`.`middle_name` = `directors`.`m_name`
WHERE `users`.`id` = `directors`.`id`;
UPDATE users AS `users`
INNER JOIN (
SELECT
`u`.`id`,
SUBSTRING_INDEX(`u`.`fio`, ' ', 1) AS `l_name`,
IF(
SUBSTRING_INDEX(SUBSTRING_INDEX(`u`.`fio`, ' ', 2), ' ', -1) = SUBSTRING_INDEX(`u`.`fio`, ' ', 1),
'',
SUBSTRING_INDEX(SUBSTRING_INDEX(`u`.`fio`, ' ', 2), ' ', -1)
) AS `f_name`,
IF(
SUBSTRING_INDEX(SUBSTRING_INDEX(`u`.`fio`, ' ', -1), ' ', -1) = SUBSTRING_INDEX(SUBSTRING_INDEX(`u`.`fio`, ' ', 2), ' ', -1),
'',
SUBSTRING_INDEX(SUBSTRING_INDEX(`u`.`fio`, ' ', -1), ' ', -1)
) AS `m_name`
FROM `users` AS `u` WHERE `u`.`agency` <> 1 AND `u`.`fio` != '' GROUP BY `u`.`id`
) AS `customers` ON `customers`.`id` = `users`.id
SET `users`.`last_name` = `customers`.`l_name`,
`users`.`first_name` = `customers`.`f_name`,
`users`.`middle_name` = `customers`.`m_name`
WHERE `users`.`id` = `customers`.`id`;