2017-12-28 10 views
0

私は2つのテーブルを1つ注文し、2番目はorder_productです。これは注文数、製品数、注文数と商品数を調べるが、私の合計数は正しくない。mysqlの内部結合から正しい合計を得るには

注文

........................... 
order_id  or_total_amt 
........................... 
    1   10   
    2   10   
    3   10 

order_product

................................. 
op_id op_order_id st_id 
................................. 
    1  1   1 
    2  2   2 
    3  3   1 
    4  3   1 

私は、出力の下にしたいが、私のtotalamount値は、それが30に来て間違っ来ているが、正しい値は、私が持っている20以下の右出力に記載されています。私が欲しい

出力:

......................................... 
st_id orders product totalmount 
......................................... 
    1   2  3   20 
    2   1  1   10 

私が間違っているtotalamountの30値を与えている、以下のクエリを試してみました。

SELECT `op_st_id`,count(distinct orders.`order_id`)as orders,count(order_product.op_pr_id) as product 
,sum(orders.or_total_amt) as totalamount from orders 
inner JOIN order_product on orders.order_id=order_product.op_order_id 
group by `op_st_id` 
+1

合計は、私には正しいようなので、私は問題が何であるかを理解していません。 –

+0

st_id 1の場合は30になります。これは間違った値です。totalamountには20の参照順序テーブルが必要です。 –

答えて

2
SELECT 
    `st_id`, 
    count(DISTINCT orders.`order_id`) AS orders, 
    count(order_product.op_id) AS product, 
    count(DISTINCT orders.`order_id`)*(sum(orders.or_total_amt)/count(order_product.op_id)) AS totalamount 
FROM 
    orders 
INNER JOIN order_product ON orders.order_id = order_product.op_order_id 
GROUP BY 
    `st_id` 
+0

すばらしいロジックありがとうジョン –

関連する問題