2012-02-11 23 views
0

次のクエリを使用してSQLデータベースから配信タイプを取得しています。このクエリは、ショッピングカート内の製品リストに関連付けられたすべての配信タイプを取得します。このクエリは、1つの製品に対して最低2種類の配送タイプを返すことができ、カート内の複数の製品についてはさらに多くの配送タイプを返すことができます。しかし、私はちょうど表示する2つの最も高価な配送コストが必要です。データベースから最高値を取得する

E.G. 製品1は、STD配信£9.99と2マン配達を持っ£29.99 製品2は、STDの配信を持つ£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

もう一度私の思考は途方もない!しかし、私はLIMITのエラーが返された近くに誤った構文が返されるので、SQLではLIMITを許可しています。早速の対応、ありがとうございました!! –

+0

私は代替がTOPだと思うが、これは間違った結果をもたらす! –

+0

SQL Serverを使用している場合は、SQL Serverを変更する必要があります。 LIMITはSQL Serverでは動作しません。 'SELECT TOP 2 uid_pdelopt、...'を試してみてください –

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

「」ビットがそこにあるはずがない場合は、取り出してかっこを残しておきます。あなたの助けてくれてありがとう! –

+0

はい、申し訳ありません。クエリの末尾に「」を移動します。 –

+0

これは現在72個の結果を生成しています http://cfukstaging.jasoncongerton.co.uk/test.cfm結果のテストページを設定します。 –

関連する問題