如何计算产品价格清单的总和(ColdFusion)

时间:2011-02-15 12:50:33

标签: loops coldfusion

这是查询:

<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>

显示了一个名单及其价格列表,我想要计算的是它们的价格总和,我的意思是所有产品。我该如何贬低它?请求帮忙!

1 个答案:

答案 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>

这有帮助吗?