у меня как раз предыдущая версия, 5.2.1-006. Баг заключается в несписании абонентки с неопределенного числа аккаунтов без видимых причин(не было на период блокировок, галка "безлимитный режим" не трогалась, услуги не пропадали)?
mikkey finn писал(а):у меня как раз предыдущая версия, 5.2.1-006. Баг заключается в несписании абонентки с неопределенного числа аккаунтов без видимых причин(не было на период блокировок, галка "безлимитный режим" не трогалась, услуги не пропадали)?
SELECT sl.account_id, psl.unabon_period, (
SELECT SUM(bi.expire_date - IF(bi.start_date > UNIX_TIMESTAMP('2009-07-01'), bi.start_date, UNIX_TIMESTAMP('2009-07-01')))
FROM blocks_info as bi
WHERE bi.account_id = sl.account_id
AND bi.is_deleted = '1'
AND (bi.expire_date BETWEEN UNIX_TIMESTAMP('2009-07-01') AND UNIX_TIMESTAMP())
AND bi.unabon = '1'
GROUP BY bi.account_id
) as 'r_unabon_period'
FROM service_links as sl, periodic_service_links as psl
WHERE sl.id = psl.id
AND psl.is_deleted = '0'
AND sl.is_deleted = '0'
AND psl.unabon_period > (
SELECT SUM(bi.expire_date - IF(bi.start_date > UNIX_TIMESTAMP('2009-07-01'), bi.start_date, UNIX_TIMESTAMP('2009-07-01')))
FROM blocks_info as bi
WHERE bi.account_id = sl.account_id
AND bi.is_deleted = '1'
AND (bi.expire_date BETWEEN UNIX_TIMESTAMP('2009-07-01') AND UNIX_TIMESTAMP())
AND bi.unabon = '1'
GROUP BY bi.account_id
)
SELECT sl.account_id, psl.unabon_period, (
SELECT SUM(bi.expire_date - IF(bi.start_date > UNIX_TIMESTAMP('2009-07-01'), bi.start_date, UNIX_TIMESTAMP('2009-07-01')))
FROM blocks_info as bi
WHERE bi.account_id = sl.account_id
AND bi.is_deleted = '1'
AND (bi.expire_date BETWEEN UNIX_TIMESTAMP('2009-07-01') AND UNIX_TIMESTAMP())
AND bi.unabon = '1'
GROUP BY bi.account_id
) as 'r_unabon_period'
FROM service_links as sl, periodic_service_links as psl
WHERE sl.id = psl.id
AND psl.is_deleted = '0'
AND sl.is_deleted = '0'
AND psl.unabon_period > (
SELECT SUM(bi.expire_date - IF(bi.start_date > UNIX_TIMESTAMP('2009-07-01'), bi.start_date, UNIX_TIMESTAMP('2009-07-01')))
FROM blocks_info as bi
WHERE bi.account_id = sl.account_id
AND bi.is_deleted = '1'
AND (bi.expire_date BETWEEN UNIX_TIMESTAMP('2009-07-01') AND UNIX_TIMESTAMP())
AND bi.unabon = '1'
GROUP BY bi.account_id
)
SELECT sl.account_id, psl.unabon_period, (
SELECT SUM(bi.expire_date - IF(bi.start_date > UNIX_TIMESTAMP('2009-07-01'), bi.start_date, UNIX_TIMESTAMP('2009-07-01')))
FROM blocks_info as bi
WHERE bi.account_id = sl.account_id
AND bi.is_deleted = '1'
AND (bi.expire_date BETWEEN UNIX_TIMESTAMP('2009-07-01') AND UNIX_TIMESTAMP())
AND bi.unabon = '1'
GROUP BY bi.account_id
) as 'r_unabon_period'
FROM service_links as sl, periodic_service_links as psl
WHERE sl.id = psl.id
AND psl.is_deleted = '0'
AND sl.is_deleted = '0'
AND psl.unabon_period > (
SELECT SUM(bi.expire_date - IF(bi.start_date > UNIX_TIMESTAMP('2009-07-01'), bi.start_date, UNIX_TIMESTAMP('2009-07-01')))
FROM blocks_info as bi
WHERE bi.account_id = sl.account_id
AND bi.is_deleted = '1'
AND (bi.expire_date BETWEEN UNIX_TIMESTAMP('2009-07-01') AND UNIX_TIMESTAMP())
AND bi.unabon = '1'
GROUP BY bi.account_id
)
а чо он делает?
2 смысл этого запроса:
Сколько абонентов подключилось за текущий месяц )
На первый взгляд получается сводная таблица из тех, у кого стояла в какой-либо форме галка "не списывать абонплату".
При этом сравниваются периоды несписания по услуге и по блокировкам.