[英]mysql two table join sum not equal result
我有两个表purchase_orders_details
和stock_orders_details
我在下面的段落中显示
purchase_orders_details
--------------------
item_id | item_qty |
--------------------
| 1 | 15 |
| 2 | 10 |
| 1 | 20 |
--------------------
stock_orders_details
------------------------
item_id | item_rcv_qty |
------------------------
| 1 | 10 |
| 2 | 5 |
| 1 | 15 |
------------------------
查询示例是:
SELECT * FROM purchase_orders_details p
left join stock_details d on p.item_qty=d.item_rcv_qty
WHERE d.item_rcv_qty IS NULL
我希望得到这样的结果,并且只有结果显示谁与item_qty not equal item_rcv_qty
匹配item_qty not equal item_rcv_qty
因为当两个数量相等时,则订单将完成。
-------------------------------------------------
Item Id | Item Quantity | Received Quantity |
-------------------------------------------------
| 1 | 35 | 25 |
| 2 | 10 | 5 |
-------------------------------------------------
您的预期输出看起来好像只是汇总了每个item_id
料品数量和料品收货数量。 如果是这样,那么解决此问题的一种方法是将两个子查询连接在一起,以计算所需的聚合。
SELECT t1.item_id,
t1.item_qty AS item_quantity,
COALESCE(t2.item_rcv_qty, 0) AS receieved_quantity
FROM
(
SELECT item_id, SUM(item_qty) AS item_qty
FROM purchase_orders_details
GROUP BY item_id
) t1
LEFT JOIN
(
SELECT item_id, SUM(item_rcv_qty) AS item_rcv_qty
FROM stock_orders_details
GROUP BY item_id
) t2
ON t1.item_id = t2.item_id
我运行查询并返回此数组
Array
(
[0] => stdClass Object
(
[item_id] => 1
[item_quantity] => 5
[receieved_quantity] => 5
)
[1] => stdClass Object
(
[item_id] => 2
[item_quantity] => 11
[receieved_quantity] => 1
)
[2] => stdClass Object
(
[item_id] => 3
[item_quantity] => 2
[receieved_quantity] => 0
)
)
第一个数组有完整的receieved_quantity
但他在数组中显示,现在我只想要那些记录不完整的记录。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.