일주일 이상이 쿼리를 수정하려고 시도했는데 제대로 작동하지 못했습니다. 나에게 가까이가는 토끼의 구멍을 내렸다. 그러나 점점 더 커졌다. 그래서 처음부터 다시 시작하고 싶습니다.잘못된 논리, 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을 : 그것은 원래 기록 된 바와 같이
. 나는이 작업을 수행 할 수있는 더 좋은 방법에 어떤 제안에 열려있어
<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>
: 같은 DateCompleted
출력 행이 보인다.
1 회 요금을 설정하거나 1 회 요금처럼 작동하는 요금을 설정 한 다음 동일한 금액에 대해 모든 설정 간격 (일, 주, 월, 분기, 연도)을 단가와 수량에 따라 달라집니다.
한 번만 결제하면 모든 것이 잘됩니다.
처음 반복 수수료를 내면 모든 것이 잘됩니다.
하지만 2 주 동안 500 명의 다른 고객이 방문한다고 가정 해 보겠습니다. 동일한 고객이 동일한 고객에게 동일한 1 시간 요금을 부과 할 것입니다. 동일한 금액의 동일한 제품에 대해 다른 BMID와 동일한 RBID를 공유합니다.
본질적으로 1 그 행의 재발을 해야하는 일회성 수수료와 그것이 재발한다고 생각하는 다른 동일한 일회성 수수료가 있으며, 첫 번째 행의 RBID가 있습니다.
소규모 회사의 경우 첫 번째 수수료 금액을 입력하고 편집하는 것을 잊지 마십시오. 그러나 큰 회사이고 기억하지 않는 경우이 버그를 해결하십시오.
내가이 부분에 대해 자세히 설명해야하는지 알려 주시기 바랍니다. 나는 행복 할거야.
편집 : 다른 방향으로 갈 위험이 있으므로 반복되는 테이블에 새 항목을 추가하여 각 반복 항목에 대한 BMID가있는 경우이를 유지하는 것이 좋습니다. 그렇게하면 반복 비용이 각 일회성 수수료에 1 열씩 속하는지 만 참조 할 수 있습니다.
제출시 추측하면 자동 증가 BMID를 만드는 billedMisc의 새 행에 모든 데이터를 추가 한 다음 반복 요금이 설정되면 되풀이 데이터를 새로 생성 된 새로 청구 된 행에 추가합니다 BMID. 어떤 비율, 수량, 사용자, 클라이언트가 일치하는지 보지 않고 특정 식별자로 묶어 버립니다.
생각 ... 감정?
편집 : 나는 내 프로젝트에서이 쿼리를 죽겠다 및
가 개조 삭제 주시기 수수료 항목에 잠금 테이블 중 하나에 새 열을 추가 해요 그래서 경사
경우
당신은 어떤 문제가 있는지 분명히 밝히지 않았습니다. – Busches
죄송합니다,이 여러 번 읽었으며 여전히 어떤 문제가 발생하는지 이해하지 못합니다. 쿼리가 "중복 된"결과를 반환합니까? ...? 코드의 * 실제 * 결과는 무엇이며 ... 예상 한 것과 다른 * 방법은 무엇입니까? 작은 데이터 덤프도 볼 수 있습니다. – Leigh
나는 더 많은 설명과 함께 편집했다. 사과드립니다. 나는 어떤 일이 일어나고 있는지, 그리고 내가해야 할 일이 무엇인지보다 모든 정보가 거기에 있는지 확인하는 데 더욱 집중했습니다. lookng 주셔서 감사. –