SQL UPDATE
Содержание
- 1 Замена дилера по признаку населённого пункта!
- 2 Подливание срока действия скретч карты, по признаку серии карт!
- 3 Продевание срока действия единичной карты
- 4 Найти пользователей у кого моб. номер из 10 символов, начинается с 9 => добавить 7 в начале
- 5 Перевод абонентов в субпровайдеры по нас. пункту
- 6 Перевести абонентов одного субпровайдера к другому субпровайдеру по признаку нас. пункта
- 7 Сгенерировать пароли абонентам у которых они отсутствую.
- 8 Cинхронизация балансов из Абиллса в Микбил.
- 9 Включить интернет всем пользователя субпровайдера с id 11
Замена дилера по признаку населённого пункта!
В данном примере: settlementid = 1 (ID Нас. Пункта), usersgroupid = 12 (ID Дилера)
UPDATE `usersgroups_users` SET `usersgroups_users`.`usersgroupid` = 12 WHERE `usersgroups_users`.`uid` IN (SELECT `usersall`.`uid` FROM `usersall` LEFT JOIN `lanes_houses` ON `usersall`.`houseid` = `lanes_houses`.`houseid` LEFT JOIN `lanes` ON `lanes_houses`.`laneid` = `lanes`.`laneid` WHERE `lanes`.`settlementid` = 1);
Подливание срока действия скретч карты, по признаку серии карт!
SET expired = новый срок действия, status = a (статус активная).
UPDATE `mikbill`.`mod_cards_cards` SET `expired` = '2020-12-31' WHERE `series` LIKE '1045' AND `expired` = '2018-12-31' AND `status` = 'a';
Продевание срока действия единичной карты
mod_cards_cards.cards_id = ID карты
UPDATE `mikbill`.`mod_cards_cards` SET `expired` = '2015-12-31' WHERE `mod_cards_cards`.`cards_id` =73216;
Найти пользователей у кого моб. номер из 10 символов, начинается с 9 => добавить 7 в начале
UPDATE `users` SET `users`.`sms_tel` = CONCAT('7',`users`.`sms_tel`) WHERE LENGTH( `users`.`sms_tel` )=10 AND `users`.`sms_tel` LIKE '9%' ORDER BY `users`.`sms_tel` ASC
Перевод абонентов в субпровайдеры по нас. пункту
Вариант 1
'Сначала удалим из других субпровайдеров на всякий случай:'
DELETE FROM `usersgroups_users` WHERE `usersgroups_users`.`uid` IN (SELECT `usersall`.`uid` FROM `usersall` LEFT JOIN `lanes_houses` ON `usersall`.`houseid` = `lanes_houses`.`houseid` LEFT JOIN `lanes` ON `lanes_houses`.`laneid` = `lanes`.`laneid` WHERE `lanes`.`settlementid` = 1)
'Затем только добавляем:'
INSERT INTO `mikbill`.`usersgroups_users` (`uid`, `usersgroupid`)(SELECT `usersall`.`uid` , 3 FROM `usersall` LEFT JOIN `lanes_houses` ON `usersall`.`houseid` = `lanes_houses`.`houseid` LEFT JOIN `lanes` ON `lanes_houses`.`laneid` = `lanes`.`laneid` WHERE `lanes`.`settlementid` = 1);
'где:'
WHERE `lanes`.`settlementid` = 1 - id населенного пункта (1)
SELECT `usersall`.`uid` , 3 - id субпровайдера (3)
Перевести абонентов одного субпровайдера к другому субпровайдеру по признаку нас. пункта
То есть всех абонентов определенного населенного пункта, если они были у других субпровайдеров, переместить указанному субпровайдеру.
UPDATE `usersgroups_users` SET `usersgroups_users`.`usersgroupid` = 3 WHERE `usersgroups_users`.`uid` IN (SELECT `usersall`.`uid` FROM `usersall` LEFT JOIN `lanes_houses` ON `usersall`.`houseid` = `lanes_houses`.`houseid` LEFT JOIN `lanes` ON `lanes_houses`.`laneid` = `lanes`.`laneid` WHERE `lanes`.`settlementid` = 2);
'где:'
WHERE `lanes`.`settlementid` = 2 - id населенного пункта (id2)
SET `usersgroups_users`.`usersgroupid` = 3 - id субпровайдера (id3) которому хотим переместить нас. пункт (id2)
Сгенерировать пароли абонентам у которых они отсутствую.
Символьно-цифровой. Пример пароля: 9911e7bf87
UPDATE `users` SET `password` = substring(MD5(RAND()) from 1 for 10) WHERE `users`.`password` = ' ';
Цифровой. Пример пароля: 1258005957
UPDATE `users` SET `password` = substring(FLOOR(RAND()* 9999999999999)from 1 for 10) WHERE `users`.`password` = ' ';
Cинхронизация балансов из Абиллса в Микбил.
UPDATE mikbill.users LEFT JOIN abills.`users` ON ( mikbill.users.user = abills.users.id ) LEFT JOIN abills.`dv_main` ON ( abills.`users`.`uid` = abills.`dv_main`.`uid` ) LEFT JOIN abills.`users_pi` ON ( abills.`users`.`uid` = abills.`users_pi`.`uid` ) LEFT JOIN abills.`bills` ON ( abills.`users`.`uid` = abills.`bills`.`uid` ) SET mikbill.users.deposit = abills.bills.deposit WHERE abills.users.id IS NOT NULL AND abills.bills.deposit >0
Включить интернет всем пользователя субпровайдера с id 11
UPDATE mikbill.users LEFT JOIN `usersgroups_users` ON `users`.`uid` = `usersgroups_users`.`uid` SET `users`.`blocked`= 0 WHERE `usersgroups_users`.`usersgroupid`= 11
==На тарифе с типом "Плавающая дата" (`packets`.`fixed` = 11) была снята два раза за сутки абонплата: в 2017-10-15 00:00:32 и 2017-10-15 23:59:56. Необходимо вернуть средства абонентам через "перерасчет" с комментарием "Возврат средств"
INSERT INTO `bugh_plategi_stat` (`uid`, `date`, `who`, `bughtypeid`, `before_billing`, `summa`, `comment`) SELECT `users`.`uid`, NOW() AS 'date', NULL AS 'who', 10 AS 'bughtypeid', `users`.`deposit` AS 'before_billing', `bugh_plategi_stat`.`summa`, 'Возврат средств' AS 'comment' FROM `bugh_plategi_stat` LEFT JOIN `users` ON `bugh_plategi_stat`.`uid` = `users`.`uid` LEFT JOIN `packets` ON `users`.`gid` = `packets`.`gid` WHERE `packets`.`fixed` = 11 AND `bugh_plategi_stat`.`date` > '2017-10-15 00:00:00' AND `bugh_plategi_stat`.`date` < '2017-10-15 01:00:00';
UPDATE `users` LEFT JOIN `bugh_plategi_stat` ON `bugh_plategi_stat`.`uid` = `users`.`uid` LEFT JOIN `packets` ON `users`.`gid` = `packets`.`gid` SET `users`.`deposit` = `users`.`deposit` + `bugh_plategi_stat`.`summa` WHERE `packets`.`fixed` = 11 AND `bugh_plategi_stat`.`date` > '2017-10-15 00:00:00' AND `bugh_plategi_stat`.`date` < '2017-10-15 01:00:00';