I have two tables purchase_orders_details
and stock_orders_details
I show in below of my paragraph
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 |
------------------------
The query example is:
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
I want to result like this, and only result show who not matched with item_qty not equal item_rcv_qty
because when both quantity is equal then order will be completed.
-------------------------------------------------
Item Id | Item Quantity | Received Quantity |
-------------------------------------------------
| 1 | 35 | 25 |
| 2 | 10 | 5 |
-------------------------------------------------
答案 0 :(得分:0)
您的预期输出看起来好像只汇总了每个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
答案 1 :(得分:0)
我运行查询并返回此数组
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
但是他在数组中显示,现在我只想要那些记录不完整的记录。