Разные SQL-запросы
Материал из BiTel WiKi
(Различия между версиями)
DimOn (Обсуждение | вклад) (→Запросы связананные с договорами) |
DimOn (Обсуждение | вклад) (→Запросы связананные с договорами) |
||
Строка 1: | Строка 1: | ||
- | == | + | == Активные договоры без тарифов == |
Все договоры, у которых статус "активен" и у которых на сегодня нет ни одного тарифного плана. | Все договоры, у которых статус "активен" и у которых на сегодня нет ни одного тарифного плана. | ||
Строка 11: | Строка 11: | ||
--[[Участник:DimOn|dimOn]] 12:32, 17 февраля 2010 (UTC) | --[[Участник:DimOn|dimOn]] 12:32, 17 февраля 2010 (UTC) | ||
- | + | == Дублированные тарифы == | |
Показывает сколько в каждом договоре каждых тарифов, по убыванию. | Показывает сколько в каждом договоре каждых тарифов, по убыванию. | ||
Строка 44: | Строка 44: | ||
--[[Участник:DimOn|dimOn]] 12:32, 17 февраля 2010 (UTC) | --[[Участник:DimOn|dimOn]] 12:32, 17 февраля 2010 (UTC) | ||
- | |||
- |
Версия 13:09, 17 февраля 2010
Активные договоры без тарифов
Все договоры, у которых статус "активен" и у которых на сегодня нет ни одного тарифного плана.
SELECT contract.id, contract.title, contract.comment, contract.STATUS, ct.id FROM contract LEFT JOIN contract_tariff AS ct ON contract.id=ct.cid AND (ct.date1 IS NULL OR ct.date1<=CURDATE()) AND (ct.date2 IS NULL OR ct.date2>=CURDATE()) WHERE ct.id IS NULL AND contract.STATUS=0
--dimOn 12:32, 17 февраля 2010 (UTC)
Дублированные тарифы
Показывает сколько в каждом договоре каждых тарифов, по убыванию. Было сделано для поиска одинаковых тарифов в договорах. Правда, не учитывает даты (добавить несложно), но для поиска дубляжей сойдёт.
SELECT contract_tariff.cid, contract_tariff.tpid, count(contract_tariff.id) AS tariff_count FROM contract_tariff GROUP BY contract_tariff.cid, contract_tariff.tpid ORDER BY tariff_count DESC
или то же самое, с дополнительной инфой:
SELECT count(contract_tariff.id) AS tariff_count, contract_tariff.tpid, contract.id, contract.title, contract.comment, tariff_plan.title FROM contract_tariff LEFT JOIN contract ON contract.id=contract_tariff.cid LEFT JOIN tariff_plan ON tariff_plan.id=contract_tariff.tpid GROUP BY contract_tariff.cid, contract_tariff.tpid ORDER BY tariff_count DESC
вот с добавлением учёта дат:
SELECT count(contract_tariff.id) AS tariff_count, contract_tariff.tpid, contract_tariff.cid, contract.title, contract.comment, tariff_plan.title FROM contract_tariff LEFT JOIN contract ON contract.id=contract_tariff.cid LEFT JOIN tariff_plan ON tariff_plan.id=contract_tariff.tpid WHERE (contract_tariff.date1 IS NULL OR contract_tariff.date1<=CURDATE()) AND (contract_tariff.date2 IS NULL OR contract_tariff.date2>=CURDATE()) GROUP BY contract_tariff.cid, contract_tariff.tpid ORDER BY tariff_count DESC
ORDER BY tariff_count DESC
HAVING tariff_count>1
--dimOn 12:32, 17 февраля 2010 (UTC)