2017-07-18 16 views
0

私は出荷テーブルと出荷明細テーブルを持っています。出荷は一般的に複数のカートンを出荷します。出荷表の数を選択し、明細表から数量を合計しようとしています。しかし、私の値は結合されたテーブルから選択されています。クエリは結合テーブルからカウントを選択しています

ex。カウント= 7、カウントは私の出荷テーブルから4でなければなりません

SELECT ss.tenant_id, 
ss.order_id, 
COUNT(ss.shipment_number), 
SUM(sd.qty_shipped) 
FROM shipment ss 
    LEFT JOIN detail sd 
     ON ss.id = sd.shipment_id 
GROUP BY 
    ss.order_id, 
    ss.tenant_id; 

出力 - >

tenant_id | order_id | count | sum 
-----------+----------+-------+------ 
     1 |  2573 |  7 | 1350 

データセット - >

shipment 
id | shipment_number | shipment_status | tracking_number | shipping_cost 
------+-----------------+----------------+----------------+--------------- 
8332 | 1000048   | confirmed  | 123   | 10.00      

8333 | 1000049   | confirmed  | 123   | 10.00     

8334 | 1000050   | confirmed  | 123   | 10.00     

8335 | 1000051   | confirmed  | 123   | 10.00 


detail 
    id | carton_number | qty_shipped | order_id | shipment_id 
-------+---------------+-------------+----------+------------ 
14654 | 1    |   200 |  2573 | 8332 
14655 | 2    |   200 |  2573 | 8332 
14656 | 1    |   200 |  2573 | 8333 
14657 | 1    |   200 |  2573 | 8334 
14658 | 2    |   200 |  2573 | 8334 
14659 | 1    |   150 |  2573 | 8335 
14660 | 2    |   200 |  2573 | 8335 
+2

どの値が間違っていて、どのような結果が期待されていますか。おそらく 'COUNT(distinct ss.order_id)'が必要でしょうか? – xQbert

+0

どのような値が「倍増」され、サンプルデータで期待される結果は何ですか?問題は1-Mの関係になる結合で、1レコードはMのすべてのレコードの倍数になります。したがって、1を数えれば、関連レコードはMに、または7つのオーダーは1が本当に存在しました。結合の前に集約するか、または個数にdistinctを使用します。 – xQbert

+0

カウントと合計はどちらも私には大丈夫です!あなたの出力で。 –

答えて

0

は私がに明確な追加する必要がありました私カウント。

   select ss.tenant_id, 
       ss.order_id, 
       count(distinct ss.shipment_number), 
       sum(sd.qty_shipped) 
       from shipping_shipment ss 
        left join shipping_shipmentdetail sd 
         on ss.id = sd.shipment_id 
       GROUP BY 
        ss.order_id, 
        ss.tenant_id; 
関連する問題