我有以下表輸出
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個碼頭和500萬的使用記錄。
在終端表中 - term_id,cust_id和tariff_id都是外鍵。用法表中沒有外鍵 - 這只是從csv文件導入的原始數據。
使用表中可能存在不存在於終端表中的終端 - 這些可以忽略。
我需要做的是根據使用情況爲每個客戶生成一張發票。我只想在2010年12月15日至2011年1月15日之間包含使用情況 - 這是結算週期。我需要根據其費率計算使用費用的發票行項...例如:在使用表中記錄第一筆記錄 - usage_1(對於term_id 1)的費用爲90x2 = 180,這是因爲term_ident使用tariff_id數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)我在Symfony中使用Doctrine - 我不知道如何有用的Doctrine將作爲檢索數據,因爲對象只會減慢進程 - 而且我不確定對象的使用是否會幫助太多這裏 ?
編輯@ 13:54 - >
當初錯誤地指定使用表...對不起!
我必須將usage_type映射到每個終端的具體資費成本,即usage_type 1 = cost_1以適當的資費...我想這使得它稍微複雜一些?
我怎麼知道term_ident = 12345使用的是tariff_id = 1?它是否使用1到5的所有關稅代碼? – Alp 2011-05-17 10:24:45
這不應該採取任何接近24小時.. – Nick 2011-05-17 10:25:42
@Alp ..抱歉..不是很清楚我的問題 - term_ident = term_number在終端表 - 我給它們命名不同,因爲它們之間沒有任何關係(在MySQL中) 。 – ManseUK 2011-05-17 10:26:30