2017-05-01 8 views
1

私は2つのテーブル、オーダー、オーダーアイテムを持っています。結合クエリでDISTINCT行のSUMを選択する

テーブル:オーダー

orderid date   deliverycost 
1   2000-01-01 5 
2   2000-01-01 3 
3   2000-01-02 0 
4   2000-01-02 4 

私は、各日付の各OrderItemの各日付の各注文の合計deliverycostの合計costpriceとsellingpriceを含める必要が日付別の売上高の報告書を作ってるんです表:OrderItemの

orderitemdid orderid costprice sellingprice 
1    1   10   12 
2    1   2   4 
3    2   10   12 
4    3   5   6 
5    3   4   10 
6    4   1   2 

私は次のような出力を提供しますクエリを探しています:

date   costprice sellingprice deliverycost 
2000-01-01 22   28    8  
2000-01-02 10   18    4 

私は、次のSQLを試してみました:

 SELECT 
      SUM(`orderitem`.`costprice`) AS `costprice`, 
      SUM(`orderitem`.`sellingprice`) AS `sellingprice`, 
      SUM(`order`.`delivery`) AS `delivery`, 
      DATE(`order`.`date`) AS `date`, 
     FROM 
      `order` 
     INNER JOIN 
      `orderitem` 
     ON 
      (`order`.`orderid` = `orderitem`.`orderid`) 
     GROUP BY 
      `date` 
     ORDER BY 
      `date` 

問題は、私がオーダー・アイテムの数を乗じ配信価格で終わるということですので、私はorderにSUM()を行うために探しています。 deliveryが実行されます。

答えて

1

引用符 の不適切な使用に関連している可能性が、列名に単一引用符を使用しませんが、あなたのケースでbacktics

SELECT 
     SUM(`orderitem`.`costprice`) as costprice, 
     SUM(`orderitem`.`sellingprice`) as sellingprice, 
     SUM(`order`.`delivery`) as delivery, 
     DATE(`order`.`confirmdate`) as `date`, 
    FROM `order` 
    INNER JOIN `orderitem` ON `order`.`orderid` = `orderitem`.`orderid` 
    GROUP BY `date` 
    ORDER BY `date` 

を使用する必要がある場合、あなたは離れていませんので、またbackticsを回避動作するはずですカラム名と予約語

SELECT 
     SUM(orderitem.costprice) as costprice, 
     SUM(orderitem.sellingprice) as sellingprice, 
     SUM(order.delivery) as delivery, 
     DATE(order.confirmdate) as date, 
    FROM order 
    INNER JOIN orderitem ON order.orderid = orderitem.orderid 
    GROUP BY date 
    ORDER BY date 

と回避直積のためにあなたが参加する可能性が集約されたテーブル

SELECT 
     SUM(t.costprice) as costprice, 
     SUM(t.sellingprice) as sellingprice, 
     SUM(order.delivery) as delivery, 
     DATE(order.confirmdate) as date, 
    FROM order 
    INNER JOIN (
    SELECT 
     orderitem.orderid 
     SUM(orderitem.costprice) as costprice, 
     SUM(orderitem.sellingprice) as sellingprice 
     from orderitem 
     group by orderitem.orderid 
    ) t ON order.orderid = t.orderid 
    GROUP BY date 
    ORDER BY date 
+0

私はバッククォートの一重引用符を修正しましたが、同じ結果を得ています...私はハビットからすべてをバックテイクする傾向があり、多くのSQLが生成されるためです。 –

+1

回答済み..カタロニア語の商品を避けるため – scaisEdge

+0

それはそれを持っています:)多くのありがとうございます。 –

関連する問題