2010-05-29 14 views
0

나는 purchase_details와 invoice_details로 두 개의 테이블을 가지고 있습니다.키를 기반으로 특정 열 값 간의 차이점을 찾는 방법은 무엇입니까?

그리고이 두 테이블의 데이터로부터 각 제품의 재고/재고를 저장하고 싶습니다.

구조체 구매 _details. invoice_details

'pid', 'int(10)' 
'product_id', 'int(10)' 
'quantity', 'float(8,2)' 
'amount', 'float(12,2)' 
'expiry_date', 'date' 

구조. 두 테이블 (invoice_details에서 제품의 합계 수량)

PRODUCT_ID이 동일 할 것입니다 -

'invoice_id', 'int(10) unsigned' 
'product_id', 'int(10) unsigned' 
'quantity', 'float(10,2)' 
'price', 'float(12,2)' 

나는 재고 (purchase_details에서 제품의 합계의 양을) 나머지의 총량을 계산하려면 .

제품 표는 제품 데이터로 구성하고, 구조는 invoice_details가 또는 모든 PRODUCT_ID에 대한 항목이있을 수도 있고 없을 수도 있습니다

'id', 'int(10) unsigned' 
'cid', 'int(10) unsigned' 
'name', 'varchar(90)' 
'selling_price', 'float(10,2)' 
'mrp', 'float(10,2)' 
'reorder_level', 'bigint(20) unsigned' 

입니다.

어떻게 진행할 수 있습니까?

+0

어떤 답변하시기 바랍니다 필요하면 당신은 당신의 위치를 ​​문을 추가 할 수 있습니까? – Vijay

답변

0
select (sum(purchase_details.quantity) - sum(invoice_details.quantity)) as stock 
    from products 
    left outer join purchase_details 
    on products.product_id == purchase_details.product_id 
    left outer join invoice_details 
    on products.product_id = invoice_details.product_id 
    group by products.product_id 

이 각 제품에 대해 당신에게 주식을 줄 것이다 MySQL은 확실하지 않다 당신이 특정 제품

select (sum(purchase_details.quantity) - sum(invoice_details.quantity)) as stock 
    from products 
    left outer join purchase_details 
    on products.product_id == purchase_details.product_id 
    left outer join invoice_details 
    on products.product_id = invoice_details.product_id 
    where products.product_id = 137 
    group by products.product_id 
+0

그것은 잘못된 값을 반환합니다. 구매 ID가 8 인 제품 ID가 7이고 제품 ID가 20 인 경우 136이고, 인보이스의 제품 ID가 7 인 제품 ID가 12이므로 제품 ID가 7 인 경우 제품 ID가 7이고 제품 ID가 8 인 경우 총계가 124 여야합니다. 그것의 returing 224 및 null – Vijay

+0

당신이 제품 테이블을 먼저 호출해야하기 때문에, 나는 진술을 수정하려고합니다. –

+0

여전히 작동하지 않습니다. 내 제품 테이블에 고유 한 ID가 있지만 product_id가 purchase_details와 invoice_details에서 반복 될 수 있습니다. – Vijay

1

이 질문은 이미 sqlserver에서 테스트 한 나의 새로운 대답입니다. 나는

select pro.id, SUM(pro.quantity - inv.quantity) 
from (select sum(p.quantity) as quantity, p.id as id from product p group by p.id) as pro, 
    (select sum(i.quantity) as quantity, i.id as id from invoice i group by i.id) as inv 
where inv.id = pro.id 
group by pro.id; 
+0

그것의 작동하지 않습니다 .. 나는 제품 테이블에 여러 제품을했습니다. product_id는 purchase_details 및 invoice_details 테이블에서 반복됩니다. 그리고 나는 각각의 모든 제품에 대해 재고 계산을하고 싶습니다. – Vijay

+0

uhm 즉, 모든 제품 ID에 대한 재고 (차이)를 표시하고 싶습니까? – vodkhang

+0

정확하게 그게 내가 원하는 .. – Vijay

관련 문제