как посчитать сумму из списка цен товаров (ColdFusion) - PullRequest
0 голосов
/ 15 февраля 2011

вот запрос:

<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 Ответ

4 голосов
/ 15 февраля 2011

Я просто делаю предположение на основе вашей (предполагаемой) структуры базы данных. Я бы рекомендовал полностью перевести вычисления в запрос, чтобы сервер БД выполнял свою работу лучше всего. Манипулирование чем-то подобным в 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>

Это помогает?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...