cfoutput集团价格

时间:2011-08-15 14:18:39

标签: sql join coldfusion

我想根据产品ID对价格进行分组,例如:http://s44.radikal.ru/i106/1108/57/33380d0557f4.jpg但是我无法正确分组,必须有一种产品和几种价格,而不是相同的产品和不同的价格。到目前为止,在Scott Stroz的帮助下,我编写了代码:

查询:

<cfquery name="get_products" datasource="#dsn3#">
    SELECT DISTINCT P.PRODUCT_ID,P.PRODUCT_NAME,PS.MONEY,PR.PRICE
    FROM PRODUCT P
        JOIN PRICE_STANDART PS ON P.PRODUCT_ID = PS.PRODUCT_ID
        JOIN PRICE PR ON P.PRODUCT_ID = PR.PRODUCT_ID
    WHERE P.IS_SALES=1 AND P.IS_PURCHASE=1 AND P.IS_INTERNET=1 AND PS.PURCHASESALES=1 AND PS.PRICESTANDART_STATUS=1 
    <cfif len(trim(attributes.product_cat)) and len(attributes.product_code)>AND P.PRODUCT_CODE LIKE '#attributes.product_code#%'</cfif>         
    <cfif isdefined('attributes.product_id') and len(attributes.product_id)>AND P.PRODUCT_ID=#attributes.product_id#</cfif>
    GROUP BY P.PRODUCT_ID,PR.PRICE,P.PRODUCT_NAME,PS.MONEY
    ORDER BY PR.PRICE DESC
</cfquery>

和表格:

<table cellpadding="3" cellspacing="1" class="color-border" width="100%">
    <tr class="color-header">
        <td width="30" class="header_bold">No</td>
        <td><b>Ürün</b></td>
        <td class="header_bold" width="80">Liste fiyatı</td>
        <td class="header_bold" width="80">Bayı 1</td>
        <td class="header_bold" width="80">Bayı 2</td>
        <td class="header_bold" width="80">Bayı 3</td>
        <td class="header_bold" width="80">Bayı 4</td>
        <td class="header_bold" width="25">Para</td>
    </tr>
    <cfoutput query="get_products" startrow="#attributes.startrow#" maxrows="#attributes.maxrows#" group="product_id">
        <tr height="20" onMouseOver="this.className='color-light';" onMouseOut="this.className='color-row';" class="color-row">
            <td>#currentrow#</td>   
            <td>#product_name#</td>
            <cfoutput group="price"><td>#tlformat(price,2)#</td></cfoutput>
            <td align="center">#MONEY#</td>
        </tr>
    </cfoutput>
</table>

谢谢大家的帮助!

1 个答案:

答案 0 :(得分:3)

假设您有一个如下所示的查询:

product_id, product_name, price
1, 'test', 100
1, 'test', 200
1, 'test', 300
2, 'test2', 100
2, 'test2', 200
2, 'test2', 300

以下代码将按产品ID分组并输出每个单独的价格

<cfoutput query="get_products" group="product_id">
    #product_name#
    Prices:
    <cfoutput>
        #price#<br>
    </cfoutput>
</cfoutput>

现在,sql中的group by与cfoutput中的coldfusions组无关。循环出独特的行是一种方便的方法。因此,当coldfusion看到两个相同的“product_id”时,它将运行嵌套的cfoutput循环。

你可以为你想要的多个级别执行此操作,但在你的情况下,似乎只有两个级别。