sql запрос

Технические вопросы по UTM 5.0
Ответить
gtk
Сообщения: 232
Зарегистрирован: Пт янв 21, 2005 18:33

sql запрос

Сообщение gtk »

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

alexunder
Сообщения: 6
Зарегистрирован: Пт июл 08, 2011 10:17

Сообщение alexunder »

Попробуйте запрос такого рода:

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

SELECT
        a.id
        , psd.cost money
FROM
        accounts a
        JOIN account_tariff_link atl ON (a.id = atl.account_id)
        JOIN tariffs_services_link tsl ON (atl.tariff_id = tsl.tariff_id)
        JOIN periodic_services_data psd ON (tsl.service_id = psd.id)
        JOIN services_data sd ON (tsl.service_id = sd.id)
WHERE
        a.is_deleted = 0
        AND atl.is_deleted = 0
        AND tsl.is_deleted = 0
        AND psd.is_deleted = 0
        AND sd.is_deleted = 0
        AND sd.service_type = 2
        AND psd.cost = 0
ORDER BY a.id


edison
Сообщения: 68
Зарегистрирован: Сб авг 15, 2009 11:34

Сообщение edison »

MySQL вернула пустой результат (т.е. ноль строк). ( запрос занял 0.0001 сек. )


не правильно что то в скрипте пустой результат. А точно знаю что есть абоненты у которых нет переодической составляющей т.е. абонплаты.

Но открывать и смотреть каждого муторное дело и продолжительное.
Поправьте что не так сборка 5.2.1-009

dk
Сообщения: 424
Зарегистрирован: Чт авг 10, 2006 08:52

Сообщение dk »

Если абонплата и трафик не разнесены в разные услуги, то укажите в запросе service_type = 3

edison
Сообщения: 68
Зарегистрирован: Сб авг 15, 2009 11:34

Сообщение edison »

Не помогает, Выводит абсолютно всех.

dk
Сообщения: 424
Зарегистрирован: Чт авг 10, 2006 08:52

Сообщение dk »

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

SELECT
        a.id
FROM
        accounts a
        JOIN account_tariff_link atl ON (a.id = atl.account_id)
        JOIN tariffs_services_link tsl ON (atl.tariff_id = tsl.tariff_id)
        JOIN periodic_services_data psd ON (tsl.service_id = psd.id)
        JOIN services_data sd ON (tsl.service_id = sd.id)
WHERE
        a.is_deleted = 0
        AND atl.is_deleted = 0
        AND tsl.is_deleted = 0
        AND psd.is_deleted = 0
        AND sd.is_deleted = 0
GROUP BY a.id
HAVING 
	GROUP_CONCAT(DISTINCT sd.service_type ORDER BY sd.service_type)='3' 
	AND SUM(psd.cost)=0
ORDER BY a.id 
;
Для разовой проверки должно подойти, для постоянной работы лучше переписать. Если и это не подойдёт, уточните детали -- какие услуги/тарифы у этих абонентов и какие у остальных.

Ответить