Несколько полезных SQL запросов

Технические вопросы по UTM 5.0
Закрыто
maxxsoft
Сообщения: 125
Зарегистрирован: Пт янв 18, 2013 09:23

Сообщение maxxsoft »

ZeM писал(а):Подскажите как отобрать аккаунты с флагом юридическое лицо.
у меня всем юрикам в лицевых счедах проставлена ставка НДС 18%
выборку по аккам можно так:

Код: Выделить всё

SELECT * from `accounts` WHERE `vat_rate` = '0.18';
Последний раз редактировалось maxxsoft Ср мар 11, 2015 14:14, всего редактировалось 1 раз.

Аватара пользователя
ZeM
Сообщения: 371
Зарегистрирован: Чт фев 17, 2011 08:38

Сообщение ZeM »

maxxsoft
Отбор с флагом юр. лицо такой.
SELECT * FROM users WHERE is_juridical=1;
Последний раз редактировалось ZeM Ср мар 11, 2015 13:46, всего редактировалось 2 раза.

maxxsoft
Сообщения: 125
Зарегистрирован: Пт янв 18, 2013 09:23

Сообщение maxxsoft »

ZeM писал(а):maxxsoft
У меня у юриков только свои тарифы и галочка юридическое лицо. Где в базе признак Юр.лицо фигурирует так и не нашел.
интересно, ваши юрлица не просят НДС выделять? тогда так:

Код: Выделить всё

set names utf8;
SELECT id,login,full_name from `users` WHERE `is_juridical` = '1';
Последний раз редактировалось maxxsoft Ср мар 11, 2015 15:31, всего редактировалось 1 раз.

Аватара пользователя
ZeM
Сообщения: 371
Зарегистрирован: Чт фев 17, 2011 08:38

Сообщение ZeM »

Другой вопрос как обнулить баланс у кого минус за исключением юридических лиц?
Запрос вида UPDATE accounts SET balance=0 WHERE balance <0 обнуляет всем.

maxxsoft
Сообщения: 125
Зарегистрирован: Пт янв 18, 2013 09:23

Сообщение maxxsoft »

ZeM писал(а):Другой вопрос как обнулить баланс у кого минус за исключением юридических лиц?
Запрос вида UPDATE accounts SET balance=0 WHERE balance <0 обнуляет всем.
Выборку юр аккаунтов можно сделать так:

Код: Выделить всё

SELECT a.* FROM users AS u, accounts AS a  WHERE a.id=u.id  AND u.is_juridical=1;
Выборку НЕ юр аккаунтов можно сделать так:

Код: Выделить всё

SELECT a.* FROM users AS u, accounts AS a  WHERE a.id=u.id  AND u.is_juridical=0;
правда это при условии что ид юзера и акаунта совпадают, при несовпадении нужно наверное делать так:

Код: Выделить всё

SELECT a.* FROM users AS u, accounts AS a  WHERE a.id=u.basic_account  AND u.is_juridical=1;
хотя надо проверять, у меня нет пользователей с несколькими акаунтами и разрывами в нумерации, проверить пока не могу..

а апдейт видимо надо делать массивом, надо подумать.... я бы всётаки сделал бы привязку юриков в таблице accounts и было бы гораздо всё проще, например внеся external_id, а уж потом делал апдейт по вашему запросу в виде:

Код: Выделить всё

UPDATE accounts SET balance=0 WHERE balance <0 and external_id not null;

Аватара пользователя
kamae1ka
Сообщения: 142
Зарегистрирован: Пн окт 04, 2010 05:14

Сообщение kamae1ka »

ZeM писал(а):Подскажите как отобрать аккаунты с флагом юридическое лицо.

Код: Выделить всё

SELECT * FROM `users` WHERE `is_juridical` = '1' 
// я прям слоупок

maxxsoft
Сообщения: 125
Зарегистрирован: Пт янв 18, 2013 09:23

Сообщение maxxsoft »

kamae1ka писал(а):
ZeM писал(а):Подскажите как отобрать аккаунты с флагом юридическое лицо.

Код: Выделить всё

SELECT * FROM `users` WHERE `is_juridical` = '1' 
// я прям слоупок
задача была отобрать акаунты, а не юзеров, да и ваш запрос уже промелькал выше в топике...

maxxsoft
Сообщения: 125
Зарегистрирован: Пт янв 18, 2013 09:23

Сообщение maxxsoft »

ZeM писал(а):
Другой вопрос как обнулить баланс у кого минус за исключением юридических лиц?
Запрос вида UPDATE accounts SET balance=0 WHERE balance <0 обнуляет всем.

Собственно вот рабочее решение:
Просто выборка акаунтов физлиц:

Код: Выделить всё

SELECT * FROM `accounts` AS a 
WHERE `id` IN 
&#40; SELECT ua.id 
 FROM `users` AS u, `users_accounts` AS ua 
  WHERE 
   a.is_deleted=0 
   AND u.is_juridical=0
   AND u.id=ua.uid&#41;;
Ну а вот апдейт баланса только физлиц:

Код: Выделить всё

UPDATE `accounts` AS a SET `balance` = '0' 
WHERE `id` IN &#40; 
SELECT ua.id 
FROM `users` AS u, `users_accounts` AS ua 
WHERE 
a.is_deleted=0 
AND u.is_juridical=0 
AND u.id=ua.uid&#41;
AND `balance` <0;

Cramac
Сообщения: 454
Зарегистрирован: Сб июл 01, 2006 17:59

Сообщение Cramac »

Всем привет. Подскажите, как найти абонента по его логину в связке "передача ип-трафика" ?

В начале темы есть запрос, но он выдает если логин основной равен логину в услуге.

Нашел логины ип-трафика в таблице ip_groups
но как их связать с таблицей аккаунтов, не понял.

Shiva
Сообщения: 131
Зарегистрирован: Пт авг 28, 2009 12:39
Откуда: Россия, Тверь

Сообщение Shiva »

Таблицы и связи:

Код: Выделить всё

FROM
	users u,
	accounts a,
	service_links sl,
	iptraffic_service_links ip,
	ip_groups g
WHERE
	&#40;u.is_deleted = 0 and a.is_deleted = 0 and sl.is_deleted = 0 and ip.is_deleted = 0 and g.is_deleted = 0&#41;
	and
	&#40;u.basic_account = a.id and sl.account_id = a.id and ip.id = sl.id and g.ip_group_id = ip.ip_group_id&#41;

Cramac
Сообщения: 454
Зарегистрирован: Сб июл 01, 2006 17:59

Сообщение Cramac »

Спасибо

CBuilder
Сообщения: 16
Зарегистрирован: Вс июл 26, 2009 16:17

Сообщение CBuilder »

Всем привет. Подскажите, как сделать запрос для выборки тарифов, доступных для изменения через личный кабинет. В Админке это настраивается "Интерфейсы-Смена тарифа". В каких таблицах это хранится?

maxxsoft
Сообщения: 125
Зарегистрирован: Пт янв 18, 2013 09:23

Сообщение maxxsoft »

CBuilder писал(а):Всем привет. Подскажите, как сделать запрос для выборки тарифов, доступных для изменения через личный кабинет. В Админке это настраивается "Интерфейсы-Смена тарифа". В каких таблицах это хранится?
эти данные содержатся в таблице switch_tariff_data

ant_perch
Сообщения: 27
Зарегистрирован: Вт фев 19, 2013 09:56
Контактная информация:

Сообщение ant_perch »

Есть вопрос. Мне необходимо выдергивать radius login абонента, как я понял этот логин, который я задаю абоненту присоздании сервисной связки. Не могу найти в какой даблице хранится логин и пароль указываемый в сервисной связке при настройке VPN

Cramac
Сообщения: 454
Зарегистрирован: Сб июл 01, 2006 17:59

Сообщение Cramac »

3мя сообщениями выше, мне отвечали на данный вопрос.

Закрыто