我使用以下查询从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>
任何指针都会受到赞赏。
杰森
答案 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。