SQL UPDATE: различия между версиями

Материал из Iknow
Перейти к навигации Перейти к поиску
 
(не показаны 3 промежуточные версии этого же участника)
Строка 8: Строка 8:
 
LEFT JOIN `lanes` ON `lanes_houses`.`laneid` = `lanes`.`laneid`
 
LEFT JOIN `lanes` ON `lanes_houses`.`laneid` = `lanes`.`laneid`
 
WHERE  `lanes`.`settlementid` = 1);
 
WHERE  `lanes`.`settlementid` = 1);
 +
 +
==Замена дилера по признаку другого дилера!==
 +
 +
''usersgroupid=1 меняем на дилера с ID 2 ''
 +
 +
UPDATE `usersgroups_users` SET `usersgroups_users`.`usersgroupid` = 2 WHERE `usersgroups_users`.`usersgroupid` = 1;
  
 
==Подливание срока действия скретч карты, по признаку серии карт!==
 
==Подливание срока действия скретч карты, по признаку серии карт!==
Строка 76: Строка 82:
 
UPDATE mikbill.users  LEFT JOIN `usersgroups_users` ON `users`.`uid` =  `usersgroups_users`.`uid` SET `users`.`blocked`= 0  WHERE  `usersgroups_users`.`usersgroupid`= 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. Необходимо вернуть средства абонентам через '''"перерасчет"''' с комментарием '''"Возврат средств"'''
+
==На тарифе с типом '''"Плавающая дата"''' (`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';
 
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';
Строка 129: Строка 135:
  
 
''usersfreeze_copy, usersdel_copy, users_copy, usersblok_copy - таблицы из которых восстанавливаем ''
 
''usersfreeze_copy, usersdel_copy, users_copy, usersblok_copy - таблицы из которых восстанавливаем ''
 +
 +
==Замена тарифа одному абоненту. ==
 +
 +
UPDATE `users` SET `users`.`gid`=11 WHERE `users`.`gid`=22 AND `users`.`uid`=55555
 +
 +
==Замена тарифа всем абонентам в тарифе. ==
 +
 +
UPDATE `users` SET `users`.`gid`=11 WHERE `users`.`gid`=22

Текущая версия на 15:15, 7 ноября 2019

Содержание

Замена дилера по признаку населённого пункта!

В данном примере: 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);

Замена дилера по признаку другого дилера!

usersgroupid=1 меняем на дилера с ID 2

UPDATE `usersgroups_users` SET `usersgroups_users`.`usersgroupid` = 2 WHERE `usersgroups_users`.`usersgroupid` = 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';

Всех абонентов у кого не выставлен субпровайдер перенести к субпровайдеру с ID 2

INSERT INTO `mikbill`.`usersgroups_users` (`uid`, `usersgroupid`) (SELECT `usersall`.`uid` , 2 FROM `usersall` WHERE `usersall`.`uid` NOT IN (SELECT `usersgroups_users`.`uid` FROM `usersgroups_users` ));

'где:'

... (SELECT `usersall`.`uid` , 2 ... - id субпровайдера (id2)

Сменить всем процедурам и функциям владельца на mikbill@localhost

UPDATE `mysql`.`proc` p SET p.definer = 'mikbill@localhost' WHERE p.db = 'mikbill';

Пользователям у которым пустое поле sms телефон заполнить из поля моб. телефон

UPDATE `users` SET `users`.`sms_tel` = `users`.`mob_tel` WHERE `users`.`sms_tel` = OR `users`.`sms_tel` IS NULL;

Привести номера абонентов в международный формат(12 цифр) 38050... т.е. если 050 то добавить спереди 38

UPDATE `users` SET `users`.`sms_tel` = CONCAT('38',`users`.`sms_tel`) WHERE LENGTH( `users`.`sms_tel` ) = 10 AND `users`.`sms_tel` LIKE '0%'

Найти дубликаты мак-адресов

SELECT `users`.`uid` , `users`.`user` , `users`.`fio` , `users`.`local_mac` FROM `users` WHERE `users`.`local_mac` <> AND `users`.`local_mac` IS NOT NULL AND `users`.`local_mac` <> 'NULL' AND `users`.`local_mac` IN (SELECT `users`.`local_mac` FROM `users` GROUP BY `users`.`local_mac` HAVING COUNT( `users`.`local_mac` ) >1)

Дать полные права для роли Администратора.

UPDATE `stuff_aclrole` SET `type` = '1' WHERE `aclid` = 1

'где:'

`aclid` =1 - ID редактируемой роли

Обновить телефоны в таблицах абонентов из бекапных таблиц.

UPDATE users LEFT JOIN users_copy ON (users.uid = users_copy.uid) SET users.phone = users_copy.phone , users.mob_tel = users_copy.mob_tel, users.sms_tel = users_copy.sms_tel WHERE users_copy.uid IS NOT NULL;

UPDATE usersblok LEFT JOIN usersblok_copy ON (usersblok.uid = usersblok_copy.uid) SET usersblok.phone = usersblok_copy.phone , usersblok.mob_tel = usersblok_copy.mob_tel, usersblok.sms_tel = usersblok_copy.sms_tel WHERE usersblok_copy.uid IS NOT NULL;

UPDATE usersdel LEFT JOIN usersdel_copy ON (usersdel.uid = usersdel_copy.uid) SET usersdel.phone = usersdel_copy.phone , usersdel.mob_tel = usersdel_copy.mob_tel, usersdel.sms_tel = usersdel_copy.sms_tel WHERE usersdel_copy.uid IS NOT NULL;

UPDATE usersfreeze LEFT JOIN usersfreeze_copy ON (usersfreeze.uid = usersfreeze_copy.uid) SET usersfreeze.phone = usersfreeze_copy.phone , usersfreeze.mob_tel = usersfreeze_copy.mob_tel, usersfreeze.sms_tel = usersfreeze_copy.sms_tel WHERE usersfreeze_copy.uid IS NOT NULL;

'где:'

usersfreeze_copy, usersdel_copy, users_copy, usersblok_copy - таблицы из которых восстанавливаем

Замена тарифа одному абоненту.

UPDATE `users` SET `users`.`gid`=11 WHERE `users`.`gid`=22 AND `users`.`uid`=55555

Замена тарифа всем абонентам в тарифе.

UPDATE `users` SET `users`.`gid`=11 WHERE `users`.`gid`=22