2012-02-11 161 views
0

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

E.G. 产品1具有标准交付£9.99 2人交付£29.99 产品2具有标准交货£18.95和2人交付£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> 

任何指针将不胜感激。

杰森

回答

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

我的思想再次陷入困境!但是在SQL中允许LIMIT,因为我在返回的'LIMIT'错误附近得到了错误的语法。谢谢你快速的回复!! – 2012-02-11 15:38:57

+0

我想替代方案是TOP,但是这会得到错误的结果! – 2012-02-11 15:40:45

+0

如果你使用SQL Server,你需要改变它。 LIMIT在SQL Server中不起作用。尝试'SELECT TOP 2 uid_pdelopt,...'而不是 – 2012-02-11 15:41:32

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与最终等领域你可能需要。

+0

不确定''位应该在那里,我是否拿出来并留下括号。感谢您对此的帮助! – 2012-02-11 17:18:31

+0

是的,对不起。移动''在查询结束时它属于 – 2012-02-11 17:23:07

+0

嗨,现在产生72个结果 http://cfukstaging.jasoncongerton.co.uk/test.cfm我为结果设置了一个测试页面 – 2012-02-11 17:26:22