Несколько полезных SQL запросов
Нашел непонятку! Делаю отрицательный баланс на аккаунте, делаю запрос в таблицу accounts по этому аккаунту и получаю поле "is_blocked" = 0 , т.е. не изменилось, но изменилось поле "block_id" стало 31752, меняю в админке у этого аккаунта тип блокировки на "Административную", снова делаю запрос и опять поле "is_blocked"=0, а поле "block_id" стало 31753. Если я правильно понимаю то при минусовом балансе и системной блокировке поле "is_blocked" должно быть 16, а при административной 256.
в 5.3-002 is_blocked не используется... поменяли механизмторопыга писал(а):Нашел непонятку! Делаю отрицательный баланс на аккаунте, делаю запрос в таблицу accounts по этому аккаунту и получаю поле "is_blocked" = 0 , т.е. не изменилось, но изменилось поле "block_id" стало 31752, меняю в админке у этого аккаунта тип блокировки на "Административную", снова делаю запрос и опять поле "is_blocked"=0, а поле "block_id" стало 31753. Если я правильно понимаю то при минусовом балансе и системной блокировке поле "is_blocked" должно быть 16, а при административной 256.
Код: Выделить всё
accounts.block_id = blocks_info.id
а состояние блокировки пишется в
Код: Выделить всё
blocks_info.block_type
расшифровывается так
Код: Выделить всё
0=нет
1=Системная блокировка
2=Административная блокировка
3=Пользовательская блокировка
ну запрос думаю поправите сами без проблем

Я бы урфой делал, удалять связку точно бы в базе не стал иначе.TiRider писал(а):Коллеги, нужен Select + Update запрос в базу, чтобы выдернуть логины и пароли из коммутируемого доступа и залить их в связку "передачи трафика", после чего удалить связку "коммутируемый доступ" всем абонентам. Может кто заморачивался?
Там очень много нюансов, как варианты:kara писал(а):Есть идеи как запросом узнать просроченную(более 60 дней) дебиторскую задолженность по лицевому счету?
Думаю надо химичить с основным отчетом, но пока не пойму как.
1) Выбрать всех пользователей с блокировкой и найти по discount_transaction время когда они ушли в минус.
2) По block_info найти время начала блокировки текущей
Но бухам обычно мало этого, им обычно надо больше информации, мы например готовим ежемесячно отчеты:
1) Раз в квартал по абонентам у которых срок КЗ и ДЗ более трех лет для списания задолженностей.
2) Ежемесячно три отчета почти похожих, но с разными интервалами КЗ и ДЗ:
- для финансовой отчетности (интервалы типа 0-30, 30-60, 60-90),
- для бухгалтерской (0-30, 30-90, 90-180)
- корпоративной (Это тоже что и для бухгалтерской но интервалы привязаны к началу месяца т. е. получается что-то типа 0-31, 31-60, 60-91))
Если основываться на дату блокировки, то у меня такой запрос:kara писал(а):Есть идеи как запросом узнать просроченную(более 60 дней) дебиторскую задолженность по лицевому счету?
Думаю надо химичить с основным отчетом, но пока не пойму как.
Код: Выделить всё
SELECT
u.login,
a.balance,
u.full_name,
u.actual_address,
u.mobile_telephone,
r.router_ip,
u.port_number,
FROM_UNIXTIME(b.start_date,'%Y-%m-%d'),
ug.group_id
FROM
users AS u,
blocks_info AS b,
accounts AS a,
routers_info AS r,
users_groups_link AS ug
WHERE
u.basic_account=a.id
and (b.start_date<unix_timestamp( date_sub( curdate( ) , INTERVAL 2 MONTH )))
and u.remote_switch_id=r.id
and b.block_type=1
and b.expire_date=2000000000
and u.basic_account=b.account_id
and u.is_deleted=0
and b.is_deleted=0
AND u.id=ug.user_id
order by start_date;
-
- Сообщения: 7
- Зарегистрирован: Вт июл 08, 2014 16:53
Не подскажите, как для заданного пользователя и заданной сервисной связки узнать _текущую_ политику списания средствами SQL ?
Я нашел поле policy_id в periodic_service_links, но у меня вопрос, по каким полям оно связано с таблицами пользователей и тарифов ?
Я попробовал вот такое:
Раньше я список услуг всегда извлекал из `service_links`, но как ей правильно связать с periodic_service_links - я пока не разобрался.
Также нашел значение policy_id в `periodic_services_data`.
Просьба подсказать, какие значения policy_id в таблицах каким привязкам политик списания соответствуют.
Я нашел поле policy_id в periodic_service_links, но у меня вопрос, по каким полям оно связано с таблицами пользователей и тарифов ?
Я попробовал вот такое:
Код: Выделить всё
SELECT atl.id, atl.account_id, u.login, u.full_name, acc.balance,
tar.name AS tariff_name, ntar.name AS next_tariff_name,
dp.is_expired,
(SELECT psl.policy_id FROM periodic_service_links psl WHERE psl.discount_period_id = dp.id AND psl.is_deleted = 0 ORDER BY expire_date DESC LIMIT 1) AS last_policy_id
FROM `account_tariff_link` atl
LEFT JOIN discount_periods dp ON dp.id = atl.discount_period_id
LEFT JOIN tariffs tar ON tar.id = atl.tariff_id AND tar.is_deleted = 0
LEFT JOIN tariffs ntar ON ntar.id = atl.next_tariff_id AND ntar.is_deleted = 0
LEFT JOIN users u ON u.basic_account = atl.account_id AND u.is_deleted = 0
LEFT JOIN accounts acc ON acc.id = atl.account_id AND acc.is_deleted = 0
WHERE dp.is_expired = 0 AND atl.is_deleted = 0
HAVING last_policy_id = 5
Также нашел значение policy_id в `periodic_services_data`.
Просьба подсказать, какие значения policy_id в таблицах каким привязкам политик списания соответствуют.
Код: Выделить всё
SELECT
sl.user_id,
us.full_name,
sl.account_id,
sd.id AS service_id,
sl.id AS slink_id,
sd.service_name,
ac.is_blocked,
psl.policy_id
FROM
UTM5.periodic_service_links AS psl,
UTM5.service_links AS sl,
UTM5.services_data AS sd,
UTM5.accounts AS ac,
UTM5.users AS us
WHERE psl.is_deleted = 0
AND psl.id = sl.id
AND sl.account_id = ac.id
AND sl.service_id = sd.id
AND sl.user_id = us.id;