我一直在嘗試解決這個查詢超過一個星期,我不能sem得到它的權利。放下一個完整的兔子洞讓我接近,但一直在變得越來越大。所以我想從頭開始。錯誤的邏輯,MSSQL,Coldfusion,來自查詢的重複結果
因爲它最初寫的:
<cfquery name="unbilledMisc" datasource="#request.dsn#">
SELECT BM.*, C.Client, U.Name, R.FrequencyUnit, R.FrequencyDuration, R.RBID
FROM BilledMisc BM
LEFT JOIN Clients C on C.ClientID = BM.ClientID
LEFT JOIN Users U on U.UserID = BM.UserID
LEFT JOIN RecurringBilling R ON (R.ClientID = C.ClientID AND BM.Rate = R.Rate AND BM.Title = R.Title)
WHERE (BM.CID = <cfqueryparam cfsqltype="CF_SQL_INTEGER" value="#CID#">)
AND (BM.Invoiced = 0)
ORDER BY BM.DateCompleted ASC;
</cfquery>
BM * = BM.BMID,BM.Userid,BM.ClientID,BM.Rate,BM.Title,BM.CID,BM.QTY,BM。 DateCompleted
的輸出行的樣子:
<td class=""><input type="checkbox" class="BMIDCheckBoxes" name="BMID" value="#BMID#" />#Client#</td>
<td class="">
<cfif #Qty# eq "">
-
<cfelse>
<a href="##" class="UpdateFeeItem invoices" title="#BMID#">#NumberFormat(Qty, '9999.99')#</a>
</cfif>
</td>
<td class="">#Name#</td>
<td>
<cfif #RBID# neq ''>
<cfswitch expression="#FrequencyUnit#">
<cfcase value="d">
<cfset FreqOutput = 'Day(s)'>
</cfcase>
<cfcase value="ww">
<cfset FreqOutput = 'Week(s)'>
</cfcase>
<cfcase value="m">
<cfset FreqOutput = 'Month(s)'>
</cfcase>
<cfcase value="q">
<cfset FreqOutput = 'Quarter(s)'>
</cfcase>
<cfcase value="yyyy">
<cfset FreqOutput = 'Year(s)'>
</cfcase>
</cfswitch>
<a href="##" name="#RBID#" id="UpdateRecItem" class="link"><img src="images/edit_icon.png" /></a>
Recurrs Every #FrequencyDuration# #FreqOutput#
</cfif>
</td>
<td class="">#DateFormat(DateCompleted, 'mm/dd/yyyy')#</td>
<td style="width:50px;" align="center"><a href="##" class="DeleteFeeItem" title="#BMID#"><img src="images/delete_icon.png" alt="Delete" title="Delete" /></a></td>
我接受任何建議,一個更好的方式來做到這一點。
您可以設置一次性費用,或者設置類似一次性費用的費用,然後以相同的美元金額爲基礎重複每隔設定的時間間隔(日,周,月,季度,年)在每單位價格和數量。
如果您只收取一次性費用,一切都很好。
當您制定第一筆經常性費用時,一切都很好。
但讓我們說2周過去和500其他客戶。並且您將爲該客戶設置另一個時間費用,由同一用戶設置,對於相同數量的相同產品,我得到一個重複行,與不同BMID共享相同的RBID
本質上是1的那些行有一次應該重複發生的費用,以及另一個相同的一次性費用,認爲它應該重現,並且具有第一行的RBID。
如果你是一家小公司,你會記得進入並編輯第一筆費用的金額,但是如果你是一家大公司而且不記得,那麼他們會記錄這個錯誤。
請讓我知道,如果我需要詳細說明這一點的任何部分。我很樂意。
編輯: 在以不同的方向去的危險,我也考慮增加新的列重複表中,就拿着BMID每個定期項目如果存在的話。這樣,我可以只參考很多重複費用,每一次的費用都由1列組成。
我猜想提交時,它會將所有數據添加到billedMisc中的新行,這會創建一個自動增加的BMID,然後如果設置了循環費用,則將循環數據添加到新創建的新的重複出價行中BMID。這將通過特定的標識符將它們鎖定在一起,而不是查看哪個速率,數量,用戶,客戶端......匹配。
想法......感覺?
編輯:我拋棄在我的項目此查詢並添加一個新列一個表,將其鎖定到收費項目
MODS的隨意刪除,如果這樣的傾向
你不清楚說明你有什麼問題。 – Busches 2013-03-20 16:09:27
對不起,我已經閱讀了幾次,仍然不明白你遇到了什麼問題:)查詢返回「重複」,輸出,...?你的代碼的* actual *結果是什麼?它們與你預期的結果有什麼不同?這也有助於看到一個小的數據轉儲。 – Leigh 2013-03-20 17:16:37
我編輯更多的解釋。我的道歉,我更專注於確保所有信息都在那裏,而不是發生了什麼,以及我需要做什麼。感謝lookng。 – 2013-03-20 17:38:41