私はこれを分解したと思ったが、多くの結果に戻る。私はこれをもっとうまく説明しようとします。SQLクエリーからの最大値
商品の配送タイプ(つまり、ワンマンデリバリー、ツーマンデリバリー)情報を保持するテーブルがあります。配送コストは製品によって異なり、各製品は複数の配送タイプを持つことができます。
ユーザーが2つの製品をカートに追加する場合、カート内のいずれかの製品から最も高価な配信オプションを表示する必要があります。
EG。
Product 1
id=2
Delivery Type=One Man delivery
Cost=**£30**
id=2
Delivery Type=Two Man delivery
Cost=£40
Product 2
id=4
Delivery Type=One Man delivery
Cost=£40
id=4
Delivery Type=Two Man delivery
Cost=**£60**
The results should be;
id=4
Delivery Type=Two Man delivery
Cost=**£60**
id=2
Delivery Type=One Man delivery
Cost=**£30**
テーブルのuid
も取得する必要があります。これにより、正しい結果が得られなくなります。すべての配信タイプが返されます。 uid
を削除すると正しい結果が表示されます。グループを止めるようだ。
<cfquery name="getDeliveryType" datasource="#application.dsn#">
SELECT txt_pdelopt_type, MAX(mon_pdelopt_actcost) AS myCost, uid_pdelopt
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="4,5" list="yes">)
GROUP BY txt_pdelopt_type, uid_pdelopt
ORDER BY myCost DESC
</cfquery>
このアプローチにはどのような方法が最適ですか?どんな助けもありがとうございます。
私は自分自身をダミーに売ったと思います!同じ配送オプションと費用を持つ2つの商品がある場合、すべての配送タイプが返されますが、コストはどちらも上回らないためです。
これは現時点では遅いですが、私はあなたを助けようとしています。
私は何をしようとしているのか分からないので、必要なものを達成しようとしています!
最初から試してみましょう。
表:tbl_product_deliveryopt
UID:uid_pdelopt
製品ID:uid_pdelopt_prodid
配信タイプ:txt_pdelopt_type
コスト:mon_pdelopt_actcost
このテーブルには、製品に関連した配信タイプが含まれています。製品のuidはuid_products
です。
各製品には、一人配達、二人配達などの複数の配達タイプがあります。
各配送タイプは、製品のサイズによって異なる場合があります。
カートに2つの商品が追加されている場合は、最初に最も安い配送コストを見つけて、見つかった最も高い費用と、最も高いコストのuid_pdelopt_prodid
を共有する他のオプションを表示する必要があります。
EG:
製品1
デルタイプ:一人
費用:£20
PRODID:3
製品1
デルタイプ:2人
費用:£40
ProdID:3
プロダクト2
デルタイプ:一の
コスト:£10
PRODID:4
製品2
デルタイプ:2つの
コスト:£20
PRODID:4
製品1が有しているので最高配送料商品1の配送料を表示する必要があります。
ただし、2つの商品で同じ送料がかかる場合があります。この場合でも、1セットのオプションを表示するだけで済みますが、同じuid_pdelopt_prodid
である必要があります。
つまり、私はuid_pdelopt_prodid
で関連付ける必要があるオプションが混在して表示できません。
それはそれをより良く説明しますか?
要件が私にはっきりしない - あなたの例を単純化できますか?例えばサンプルデータと希望する出力。また、問題に関連するcoldfusionはありますか? – ninesided
テーブルddlを投稿できますか?列の名前は少しわかりにくいです。どのIDがハードコーディングされたリストに関係しているかは不明です: '4,5'。また、SQL型の質問にデータベース型を含めることは常に有効です。 – Leigh