2016-09-10 2 views
1

У меня есть две таблицы purchase_orders_details и stock_orders_details я показываю в ниже моего пунктаMySQL два соединения таблиц сумма не равна результату

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 Id | Item Quantity | Received Quantity | 
------------------------------------------------- 
| 1 | 35   |  25   | 
| 2 | 10   |  5   | 
------------------------------------------------- 
+0

Откуда берутся 32? – Drew

+0

извините! его 35 я должен отредактировать это ... –

ответ

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 
+0

у вас может быть id в таблице2, а не в таблице 1: p – Drew

+0

На самом деле я думаю, что нам не хватает еще более крупной точки, которую ОП выполнял смутной работой по описанию. В любом случае, прежде чем написать полное внешнее соединение, я буду ждать обратной связи. –

+0

ах, я знаю, они могут понять это, когда отчеты выходят не так. – Drew

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, но он показывает в массиве, теперь я хочу, только эти записи, который имеет неполную запись.

Смежные вопросы