0

現在、ユーザーが追加したトロリーからすべてのアイテムを引き出すクエリに取り組んでいます。以下のコードは、私が達成しようとしていることを示しています。ここでは、すべてのトロリー アイテムを取得して数量を合計し、各アイテムのコスト + 数量を互いに掛け合わせて合計します。また、このクエリからボグ標準の列名を呼び出せるようにしたいと考えています。3つのクエリを作成する以外にこれを行う方法についてはよくわかりません。1つはトロリー自体、1つはユーザーのアイテムの合計量、もう1つはユーザーの総コストですが、確かにすべて実行できます1つのクエリでよろしいですか?

<cfquery datasoure="#application.datasource#" name="trolley">
    Select *, IsNull(Sum(trolley_amount), 0) As trolly_items, IsNull(Sum(trolley_cost * trolley_amount), 0) As trolley_totalcost
    From trolley
</cfquery>
4

2 に答える 2

1

コールドフュージョンの答えを出します。これは、DB への 1 つのクエリと、クエリ クエリの 1 つまたは 2 つのクエリで実行できます。これはコード内で 2 つまたは 3 つのクエリのように見えますが、実際には 1 つのクエリ (DB へのトリップ) と 2 つの「配列フィルタリングまたは集計」操作になります。要するに、次のようになります。

<cfquery name="myTrolley" datasource="myDSN">
SELECT  Item, quantity, cost, quantity * cost AS totalItemCost
FROM    trolley
WHERE   userID = <cfqueryparam cfsqltype="CF_SQL_INTEGER" value="#userid#"/>

<cfquery name="itemTotals" dbtype="query">
    SELECT SUM(totalItemCost) AS grandTotal
    FROMY   myTrolley
</cfquery>

もちろん、実際のクエリは異なりますが、DB へのトラフィックを減らすことが目標である場合 (時には利益を得ることができる称賛に値する目標)、これが最適な方法かもしれません。Q の Q は、この種のことに対してかなり無駄がなく効率的ですが、もちろん、過度に複雑にしようとすると機能しなくなります。

于 2013-08-16T21:21:37.717 に答える
-1

Adam が言ったように、これは SQL の質問です。

質問から、台車に商品を入れたいとのことで、購入した商品の合計金額と合計数(合計金額)を教えてください。

私の経験と少しの掘り下げから、単一の SQL ステートメントですべてを実行することはできません。むしろ、2 つのステートメントが必要です。最初にトロリーでアイテムを取得し、2 番目は、質問の SQL で行ったのと同じように合計コストと合計金額を組み合わせます。これらは両方とも集計関数であるためです。

したがって、SQLでそれを削除して*、新しいSQLを作成してください。

于 2013-08-16T19:45:32.383 に答える