簡體   English   中英

MySQL從具有相同產品的多個記錄的兩個表中獲取列總和

[英]MySQL get sum of columns from two tables having multiple records of same product

產生表

order_items表

我的要求是獲取生產項目數量和銷售項目數量的總和。 我的查詢是

select productions.created_at, 
       produced.expiry_date,
       items.id as item_id,
       items.quantity as 
       sold_quantity,
       items.product_price as sailing_price,
       sum(produced.quantity) as total_produced,
       sum(items.quantity) as total_sold 
from productions inner join produced_products as produced
on produced.production_id = productions.id 
inner join store_order_items as items 
on items.product_keeping_id = produced.keeping_id 
group by produced.keeping_id, items.product_keeping_id

該查詢返回

[0] => Array ( [created_at] => 2017-07-13 10:25:52 [expiry_date] => 2017-07-31 [item_id] => 2 [sold_quantity] => 1.00 [sailing_price] => 120 [total_produced] => 6.000 [total_sold] => 2.00 )

[1] => Array ( [created_at] => 2017-07-07 13:30:25 [expiry_date] => 0000-00-00 [item_id] => 3 [sold_quantity] => 1.00 [sailing_price] => 120 [total_produced] => 16.000 [total_sold] => 4.00 )

這些記錄是錯誤的。 它應該返回

 [0] (
        [total_sold] => 1
       ),
  [1] (
       [total_sold] => 1
      )

我怎樣才能得到正確的結果

試試這個

select productions.created_at, 
produced.expiry_date,
items.id as item_id,
items.quantity as sold_quantity,
items.product_price as sailing_price,
sum(produced.quantity) as total_produced,
(SELECT sum(t1.quantity) FROM `store_order_items` as t1 where t1.product_keeping_id = produced.keeping_id ) as total_sold
from productions inner join produced_products as produced
on produced.production_id = productions.id 
inner join store_order_items as items 
on items.product_keeping_id = produced.keeping_id 
group by produced.keeping_id, items.product_keeping_id

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM