从数据库中获取最高值

时间:2012-02-11 15:23:36

标签: sql coldfusion

我使用以下查询从SQL数据库中获取传递类型,查询获取与购物车中的产品列表关联的所有传递类型。查询可以为一个产品返回至少两种交付类型,或者为购物车内的多个产品返回更多交付类型。但是我只需要显示两个最昂贵的运费。

E.G。 产品1有标准交付£9.99和2 Man交付£29.99 产品2有Std Delivery£18.95 AND 2 Man Delivery£39.99

我需要在屏幕上显示产品2的交货类型。我可以使用最大功能还是仅返回最高交货价格?

正在使用的查询:

<cfquery name="getDeliveryType" datasource="#application.dsn#">
SELECT 
  uid_pdelopt,
  txt_pdelopt_type,
  mon_pdelopt_cost,
  uid_pdelopt_prodid,
  txt_pdelopt_detail,
  bit_pdelopt_active,
  bit_pdelopt_selected,
  uid_pdelopt_webid,
  uid_pdelopt_typeid,
  mon_pdelopt_actcost
    FROM dbo.tbl_product_deliveryopt
    WHERE bit_pdelopt_active=<cfqueryparam cfsqltype="cf_sql_bit" value="yes">
   AND uid_pdelopt_prodid IN (<cfqueryparam cfsqltype="cf_sql_integer" value="#arguments.uid_pdelopt_prodid#" list="yes">)
</cfquery> 

任何指针都会受到赞赏。

杰森

2 个答案:

答案 0 :(得分:1)

您可以按成本DESC订购,并将结果限制为2

<cfquery name="getDeliveryType" datasource="#application.dsn#">
SELECT TOP 2
  uid_pdelopt,
  txt_pdelopt_type,
  mon_pdelopt_cost,
  uid_pdelopt_prodid,
  txt_pdelopt_detail,
  bit_pdelopt_active,
  bit_pdelopt_selected,
  uid_pdelopt_webid,
  uid_pdelopt_typeid,
  mon_pdelopt_actcost
    FROM dbo.tbl_product_deliveryopt
    WHERE bit_pdelopt_active=<cfqueryparam cfsqltype="cf_sql_bit" value="yes">
   AND uid_pdelopt_prodid IN (<cfqueryparam cfsqltype="cf_sql_integer" value="#arguments.uid_pdelopt_prodid#" list="yes">)

    ORDER BY mon_pdelopt_cost DESC
</cfquery> 

答案 1 :(得分:0)

让我们试试看它是否有效:

SELECT TOP 2
 txt_pdelopt_type, MAX(mon_pdelopt_actcost) AS myCost, OTHER_FIELD

FROM dbo.tbl_product_deliveryopt 

WHERE bit_pdelopt_active=<cfqueryparam cfsqltype="cf_sql_bit" value="yes"> AND uid_pdelopt_prodid IN (<cfqueryparam cfsqltype="cf_sql_integer" value="5,49" list="yes">) 

GROUP BY uid_pdelopt_prodid, txt_pdelopt_type, OTHER_FIELD

ORDER BY myCost DESC

使用您可能需要的最终其他字段更改OTHER_FIELD。