1

ベストセラー システムを実行しようとしていますが、SQL ステートメントに問題があります。ここに私のSQLがあります:

select sp.name, pr.productName, op.productID, SUM(op.orderQuantity) AS totalQty from sm_orderedproduct op
INNER JOIN sm_payment p ON op.orderID = p.orderID 
INNER JOIN sm_product pr ON op.productID = pr.productID
INNER JOIN sm_sellerproduct sp ON sp.productID = pr.productID
WHERE MONTH(str_to_date( dateOfPurchase, '%d/%m/%Y' )) = 7
GROUP BY sp.name, pr.productName, op.productID
ORDER BY SUM(op.orderQuantity) DESC LIMIT 4;

この SQL ステートメントでは、重複した販売者名が取得されます。例えば

売り手ディーンは97台のテレビを販売しました

売り手 Rk が 20 台のデスクトップを販売

売り手のディーンは再び 15 台のハードディスクを販売しました

売り手 Gab は 2 つの木製テーブルを販売しました

ご覧のとおり、販売された商品が異なるため、販売者 Dean は 2 回繰り返されています。私は次のようにしたい:

出品者 Dean は 112 個の商品を販売しました

出品者 Rk は 20 個の商品を販売しました

出品者 Gab が 2 個の商品を販売しました

そして、どんな売り手が売ったのですか?製品

group by 句で何か問題が発生したと思います。前もって感謝します。

4

1 に答える 1

3

次の方法で、クエリ/グループから製品関連情報を削除する必要があります。

select sp.name, sum(op.orderQuantity) AS totalQty 
from sm_orderedproduct op
    inner join sm_payment p ON op.orderID = p.orderID 
    inner join sm_product pr ON op.productID = pr.productID
    inner join sm_sellerproduct sp ON sp.productID = pr.productID
where MONTH(str_to_date( dateOfPurchase, '%d/%m/%Y' )) = 7
group by sp.name
order by sum(op.orderQuantity) desc 
limit 4;
于 2013-07-21T02:46:47.800 に答える