2016-11-06 5 views
0
SELECT MAX("Total spending"), id_order 
FROM (
    SELECT "id_ordine", SUM("quantity" * "price") "Total spending" 
    FROM "t_orders", "t_products" 
    WHERE "t_orders"."id_products" = "t_products"."id_products" 
    GROUP BY "id_order" 
) 

これは私のクエリです:私は私の注文とid_orderの高い店の請求書を表示する必要があります。 私はt_ordersに3つの列を持っています:id_order(1つ以上の製品を注文できるのでいくつかの同じ番号があります)、id_productとquantity。 t_productsにはid_product、price、およびnameがあります。 私の問題は、私は高い店の法案とid_orderを示さなければならないと私はこれを実行しようとしたということですが、それはD動作しません:私は申し訳ありませんがLibreOfficeの5.2 で働いている私の悪い英語 PS用MySQLはid_orderとmax()を表示していません

申し訳ありません2番目の選択の後の列は "id_order"です

+0

あなたのテーブル構造や少なくともクエリの応答を見ることなく、何が間違っているか把握することは不可能です。 – brandonscript

答えて

0

使用order bylimit

SELECT "id_ordine", SUM("quantity" * "price") "Total spending" 
FROM "t_orders", "t_products" 
WHERE "t_orders"."id_products" = "t_products"."id_products" 
GROUP BY "id_order" 
ORDER BY "Total Spending" DESC 
LIMIT 1; 

id_orderGROUP BYに集約していないされていないので、あなたのクエリは、ほとんどのデータベースでは動作しないでしょう。 MySQLは構文を受け入れますが、処理されている不確定な行から順番に並べ替えます。

+0

です。私は4日前にmysqlを勉強し始めましたが、それはどういう仕組みかわかりませんが、より簡単で美しいので、ありがとう、兄。 PSほとんどのデータベースでクエリが機能しない理由を簡単に説明できますか? 2番目の選択の後のPSは "id_order"でした。私の失敗 – Robz

+0

@Robz。 。 。 'MAX()'はクエリを集約クエリに変換するため、クエリは機能しません。 'id_ordine'は集約されず、集約キーではありません。 –

0

インラインビュー(OR)サブクエリの結果には、id_orderという名前の列は含まれていません。同じ列を取得する前に、その列をサブクエリに含めます。

SELECT MAX("Total spending"), id_order 
FROM (
    SELECT "id_ordine", 
    SUM("quantity" * "price") "Total spending", 
    id_order          //Add this column 
    FROM "t_orders", "t_products" 
    WHERE "t_orders"."id_products" = "t_products"."id_products" 
    GROUP BY "id_order" 
) 
+0

申し訳ありませんが、2回目の選択後の列は "id_order" – Robz

関連する問題