0

各顧客が購入した最も高価な製品を選択したいのですが、顧客、購入、製品価格の 3 つのテーブルに情報があります。

テーブルは次のようになります。

顧客:

Customer_ID | Customer_Name

購入:

Customer_ID | Product_ID

製品価格:

Product_ID | Price

私が実行しているのは:

SELECT  
Customer_Name, max(Price), Purchases.Product_ID
            FROM Customers 
            LEFT JOIN Purchases 
            ON Customers.Customer_ID=Purchases.Customer_ID
            LEFT JOIN ProductPrices
            ON Purchases.Product_ID=ProductPrices.Product_ID
                        GROUP BY Customer_Name
                        ORDER BY ABS(Price) DESC
                        ;

そして、私が得ている出力は正しい名前と最高の購入ですが、product_idは最初のものであり、最高価格に関連付けられていません。

私が間違っていることを見つけるのを手伝ってもらえますか?

編集:

簡単にするために、私はこれを作成しました:

http://sqlfiddle.com/#!2/db7f9/1

4

2 に答える 2

-1

これを試して

    SELECT Customer_Name, max(Price) price , Product_ID FROM (
 SELECT  
Customer_Name, Price, Purchases.Product_ID
        FROM Customers 
        INNER JOIN Purchases 
        ON Customers.Customer_ID=Purchases.Customer_ID
        INNER JOIN ProductPrices
        ON Purchases.Product_ID=ProductPrices.Product_ID


                    ORDER BY ABS(Price) DESC
)t

GROUP BY Customer_Name

デモはこちら

出力:

  CUSTOMER_NAME     PRICE   PRODUCT_ID
     John           30000   3
     Kate           30000   3
     Peter          20000   2
于 2013-10-12T11:46:37.963 に答える