есть запрос такого вида:
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
Выводит всех пользователей у которых подключен тариф. Подскажите что добавить, или помогите составить запрос чтобы остались те пользователи у которых не подключена(удалена) услуга абонентской платы.
или подскажите запрос как выбрать подключенные сервисные связки, или в каких таблицах смотреть подключена ли абоненту абонентская плата.
подскажите с запросом абонентской платы
Что-то не очень понял, что с чем связать и зачем суммировать.абонплату суммировать по periodic_services_data.cost , связав periodic_services_data и services_data с tariff_id
В periodic_services_data.cost стоят как раз суммы по сервисным связкам. Но не могу понять, как и через что именно их связать с тарифами.
Связь такая: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, хреново знаю 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;