2011-07-31 3 views
2

를 생성하는 : -MySQL의 쿼리 문제 - 난 다음 쿼리 작업입니다 재주문 보고서

SELECT group,item,buffer,stock,(stock-buffer) AS shortexcess 
FROM stkmain, stkbalance, stkbuffer 
WHERE stkmain.item = stkbalance.item 
AND stkmain.item = stkbuffer.item 

이 쿼리는 잘 작동합니다. 나는 '판매'테이블에서 오는 매출의 다른 coloumn를 추가하고 싶습니다. 개정 된 쿼리는 다음과 같습니다 -

SELECT group,item,buffer,stock,(stock-buffer) AS shortexcess, quantity 
FROM stkmain, stkbalance, stkbuffer, sale 
WHERE stkmain.item = stkbalance.item 
AND stkmain.item = stkbuffer.item 
AND stkmain.item = sale.item 

이 쿼리에 문제가 stkmain 테이블의 모든 행을 판매 테이블에 표시하고 있지 않습니다 만 행을 보여주고 있다는 점이다. 친절하게도이 쿼리를 어떻게 수정해야합니까? .

답변

4

sktmain에서 Left Join을 사용하면 sktmain의 모든 행을 가져올 수 있습니다.

SELECT group,item,buffer,stock,(stock-buffer) AS shortexcess, quantity 
FROM stkmain 
LEFT OUTER JOIN stkbalance ON stkmain.item = stkbalance.item 
... 
+0

@cularisthanks. 또한 현재 표시되는 총 행은 총 항목 수보다 큽니다. 아마 판매 테이블이 항목을 두 번 이상 구성하기 때문입니다. 특정 항목에 대한 총 판매량을 구하려면 쿼리에 고유 항목이 표시되도록하려면 어떻게해야합니까? 이 개념은 – mmdel

+1

이있는 경우 재고 품목 수량, 버퍼 수량 및 해당 품목의 판매량을 포함하는 재주문 보고서를 생성하는 것입니다. 수량을 합계 (수량)로 변경하고 항목별로 그룹을 추가하고 올바르게 처리했습니다. 고마워. – mmdel

1
SELECT `group`, item,buffer, stock, stock-buffer AS shortexcess 
FROM stkmain 
JOIN stkbalance ON skmain.item = stkbalance.item 
JOIN stkbuffer ON stkmain.item = stkbuffer.item 
OUTER JOIN sale ON stkmain.item = sale.item 

그룹은 reserved keyword이며, 역 따옴표로 이스케이프해야합니다.