У меня есть следующие таблицы
customers
cust_id cust_name
1 a company
2 a company 2
3 a company 3
tariffs
tariff_id cost_1 cost_2 cost_3
1 2 0 3
2 1 1 1
3 4 0 0
terminals
term_id cust_id term_number tariff_id
1 1 12345 1
2 1 67890 2
3 2 14324 1
4 3 78788 3
usage
term_ident usage_type usage_amount date
12345 1 20 11/12/2010
67890 2 10 31/12/2010
14324 1 1 01/01/2011
14324 2 5 01/01/2011
78788 1 0 14/01/2011
В реальной жизни таблицы довольно велики - 5000 клиентов, 250 тарифов, 500000 терминалов и 5 миллионов записей об использовании.
Втаблица терминалов - term_id, cust_id и attribute_id - все внешние ключи.В таблице использования нет внешних ключей - это просто необработанные данные, импортированные из файла CSV.
В таблице использования могут быть терминалы, которых нет в таблице терминалов - их можно игнорировать.
То, что мне нужно сделать, - это выставить счет на каждого клиента при использовании.Я хочу включить использование только между 15.12.2010 и 15.01.2011 - это расчетный период.Мне нужно рассчитать отдельные позиции счета-фактуры для использования на основе его тарифа ... например: взять первую запись в таблице использования - стоимость использования_1 (для term_id 1) будет 90x2 = 180, это потому, чтоterm_ident использует номер_тарифа 1.
Вывод должен быть следующим:
Customer 2
date terminal usage_cost_1 usage_cost_2 usage_cost_3 total cost
01/01/2011 14324 18 0 6 24
Я компетентный разработчик PHP - но только начинающий с SQL.Мне нужно несколько советов по поводу наиболее эффективного процесса создания счетов-фактур - возможно, существует запрос SQL, который поможет мне до того, как обработка в PHP начнет вычислять затраты, - или, возможно, оператор SQL тоже может произвести затраты?Любой совет приветствуется ....
Редактировать:
1) В данный момент выполняется какой-то процесс - он написан на C ++ и занимает около 24 часов, чтобы его обработать ... я неу меня есть доступ к источнику.
2) Я использую Doctrine в Symfony - я не уверен, насколько полезен Doctrine для извлечения данных, поскольку объекты только замедляют процесс - и я не уверен, чтоздесь слишком сильно поможет использование объектов?
Edit @ 13: 54 ->
Неправильно ли указана таблица использования ... Извините!
Мне нужно сопоставитьиспользование_типа к стоимости на конкретном тарифе для каждого терминала, т.е. тип использования 1 = стоимость_1 в соответствующем тарифе ... Я думаю, что это немного усложняет?