подскажите с запросом абонентской платы

Технические вопросы по UTM 5.0
Ответить
whopix
Сообщения: 3
Зарегистрирован: Чт мар 25, 2010 08:26

подскажите с запросом абонентской платы

Сообщение whopix »

есть запрос такого вида:
SELECT
account_tariff_link.account_id, users.full_name, tariffs.name
FROM
UTM5.users
INNER JOIN UTM5.account_tariff_link ON users.basic_account = account_tariff_link.account_id
INNER JOIN UTM5.tariffs ON account_tariff_link.tariff_id = tariffs.id
WHERE
account_tariff_link.is_deleted = 0

Выводит всех пользователей у которых подключен тариф. Подскажите что добавить, или помогите составить запрос чтобы остались те пользователи у которых не подключена(удалена) услуга абонентской платы.

или подскажите запрос как выбрать подключенные сервисные связки, или в каких таблицах смотреть подключена ли абоненту абонентская плата.

Аватара пользователя
vitalka
Сообщения: 70
Зарегистрирован: Пн июн 01, 2009 07:11
Откуда: Иркутск
Контактная информация:

Сообщение vitalka »

Как сюда добавить еще баланс и аб.плату по данному тарифу??

dwemer
Сообщения: 276
Зарегистрирован: Чт янв 25, 2007 05:59

Сообщение dwemer »

vitalka писал(а):Как сюда добавить еще баланс и аб.плату по данному тарифу??
баланс accounts.balance
INNER JOIN UTM5.accounts ON account_tariff_link.account_id = accounts.id

абонплату суммировать по periodic_services_data.cost , связав periodic_services_data и services_data с tariff_id

Аватара пользователя
Chris
Сообщения: 2323
Зарегистрирован: Чт июн 02, 2005 14:08
Откуда: 33 76 77 71 86 37 98

Сообщение Chris »

UTM5.accounts.used_id = %id%
и вытащить UTM5.accounts.balance

так кажется

жу запрос за тебя писать не буду, на работу собираюсь

Аватара пользователя
vitalka
Сообщения: 70
Зарегистрирован: Пн июн 01, 2009 07:11
Откуда: Иркутск
Контактная информация:

Сообщение vitalka »

Да баланс-то я вытащил без проблем. А вот с абон.платой что-то совсем заблудился в таблицах

Аватара пользователя
vitalka
Сообщения: 70
Зарегистрирован: Пн июн 01, 2009 07:11
Откуда: Иркутск
Контактная информация:

Сообщение vitalka »

абонплату суммировать по periodic_services_data.cost , связав periodic_services_data и services_data с tariff_id
Что-то не очень понял, что с чем связать и зачем суммировать.
В periodic_services_data.cost стоят как раз суммы по сервисным связкам. Но не могу понять, как и через что именно их связать с тарифами.

dwemer
Сообщения: 276
Зарегистрирован: Чт янв 25, 2007 05:59

Сообщение dwemer »

vitalka писал(а):Что-то не очень понял, что с чем связать и зачем суммировать.
В periodic_services_data.cost стоят как раз суммы по сервисным связкам. Но не могу понять, как и через что именно их связать с тарифами.
Связь такая:
tariffs.id = account_tariff_link.tariff_id
account_tariff_link.tariff_id = services_data.tariff_id
services_data.id = periodic_services_data.id
periodic_services_data.cost - стоимость услуги.

Суммировать стоимости нужно в том случае, если у вас в тарифном плане несколько периодических услуг. По приведенным выше таблицам это даст стоимость тарифа со всеми включенными услугами.

Если вам нужно просуммировать только те услуги, которые подключены абоненту - нужно смотреть по сервисным связкам. Связь такая:
tariffs.id = account_tariff_link.tariff_id
account_tariff_link.id = service_links.tariff_link_id
service_links.service_id = periodic_services_data.id

плюс можно проверять service_links.id=periodic_service_links.id или services_data.service_type чтоб только периодические услуги выбирать

dwemer
Сообщения: 276
Зарегистрирован: Чт янв 25, 2007 05:59

Сообщение dwemer »

desc account_tariff_link;
desc service_links;
desc periodic_service_links;
desc services_data;
desc periodic_services_data;

Аватара пользователя
vitalka
Сообщения: 70
Зарегистрирован: Пн июн 01, 2009 07:11
Откуда: Иркутск
Контактная информация:

Сообщение vitalka »

dwemer, хреново знаю join'ы, подскажи, пожалуйста, как тогда должен выглядеть запрос? У меня сейчас выглядит так:

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

SELECT round(accounts.balance,2) balance,account_tariff_link.account_id uid, users.full_name uname, tariffs.name tariff
FROM users
INNER JOIN account_tariff_link ON users.basic_account = account_tariff_link.account_id
INNER JOIN tariffs ON account_tariff_link.tariff_id = tariffs.id
INNER JOIN accounts ON account_tariff_link.account_id = accounts.id
WHERE account_tariff_link.is_deleted = 0
ORDER BY uid;

Ответить