2017-07-18 86 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,您將只獲得1 * M中的相關記錄,或僅當1真的存在。在加入之前聚合或在計數上使用不同的值。 – xQbert

+0

計數和總和,都看我OKAY!在你的輸出中。 –

回答

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;