这是查询:
<cfquery name="GET_SHIP_ROW" datasource="#DSN2#">
SELECT
SR.*,
S.STOCK_CODE
FROM
SHIP_ROW SR,
#dsn3_alias#.STOCKS S
WHERE
SR.STOCK_ID = S.STOCK_ID AND
SR.SHIP_ID = #attributes.ship_id#
ORDER BY
SR.SHIP_ROW_ID
</cfquery>
例如我有一个价格的循环代码:
<cfloop from="#satir_start#" to="#satir_end#" index="i">
<cfif i lte get_ship_row.recordcount>
<cfscript>
if(len(get_ship_row.discount[i]))indirim = get_ship_row.discount[i]; else indirim = 0;
adim_1 = get_ship_row.amount[i] * get_ship_row.price[i];
adim_2 = (adim_1/100)*(100-indirim);
adim_3 = adim_2*(get_ship_row.tax[i]/100);
adim_4 = adim_2+adim_3;
</cfscript>
<cfquery name="GET_BARCODE" datasource="#DSN3#">
SELECT
BARCOD
FROM
PRODUCT
WHERE
PRODUCT_ID = #get_ship_row.product_id[i]#
</cfquery>
<table>
<tr>
<td style="width:30mm;"><cfoutput>#get_ship_row.stock_code[i]#</cfoutput></td>
<td style="width:50mm;"><cfoutput>#left(get_ship_row.name_product[i],53)#</cfoutput></td>
<td style="width:25mm;" align="right"><cfoutput>#get_ship_row.amount[i]# #get_ship_row.unit[i]#</cfoutput></td>
<td style="width:25mm;" align="right"><cfoutput>#TLFormat(get_ship_row.price[i])#</cfoutput> TL</td>
<td style="width:35mm;" align="right"><cfoutput>#TLFormat(get_ship_row.amount[i] * get_ship_row.price[i])#</cfoutput> TL</td>
</tr>
</table>
</cfif>
</cfloop>
显示了一个名单及其价格列表,我想要计算的是它们的价格总和,我的意思是所有产品。我该如何贬低它?请求帮忙!
答案 0 :(得分:4)
我只是根据您的(推测的)数据库结构进行猜测。我建议将计算完全转移到查询中,以便数据库服务器正在做最好的工作。在CF中操作这样的东西并不是最佳的。
你必须对此进行测试,但我认为它足够接近开始:
<cfquery name="GET_SHIP_ROW" datasource="#DSN2#">
SELECT
SR.*,
S.STOCK_CODE,
( (sr.amount*sr.price) * ( (100-discount)/100 ) * ( tax/100 ) ) as itemCost
FROM
SHIP_ROW SR,
#dsn3_alias#.STOCKS S
WHERE
SR.STOCK_ID = S.STOCK_ID AND
SR.SHIP_ID = #attributes.ship_id#
ORDER BY
SR.SHIP_ROW_ID
</cfquery>
在记录集中包含订单项总计后,运行查询查询以获取所有订单项的总和非常简单:
<cfquery name="total" dbtype="query">
select sum(itemCost) as shipmentTotal from GET_SHIP_ROW
</cfquery>
这有帮助吗?