테이블 stock_transactions
및 stock_transactions_serials
인 재고 DB 디자인이 있습니다. 재고 트랜잭션 테이블은 창고에서 모든 IN 및 OUT 트랜잭션을 보유합니다. 각 트랜잭션은 함께가는 일련 번호 목록을 가질 수 있습니다.이 번호는 stock_transactions_serials
에 기록되며 여기서 index는 stock_transaction_id + serial_id입니다.mysql inventory transactions - 위치에 일련 번호 목록 가져 오기
qty> 0 인 모든 위치에있는 일련 번호 목록을 나열하는 쿼리를 작성해야합니다. 여기서는 http://sqlfiddle.com/#!9/520bfa/5에서 작동 할 데이터가있는 SQL 피들을 빌드했습니다.
현재 내 SQL은 다음과 같이이다 :
SELECT
ST.id,
ST.warehouse_location_id,
ST.product_id,
SUM(ST.quantity) AS qty,
STS.serials AS serials
FROM stock_transactions ST
LEFT JOIN (
SELECT stock_transaction_id, GROUP_CONCAT(serial_id) AS serials
FROM stock_transactions_serials
GROUP by stock_transaction_id
) STS ON STS.stock_transaction_id = ST.id
WHERE
ST.document_id = 9
GROUP BY ST.warehouse_location_id
HAVING qty > 0
이 SQL에서 결과는 매우 옳지 않다. QTY는 맞지만 일련 번호가 잘못되었습니다 ...이 문서의 다른 주식 거래가 남았거나 그 위치에 들어간 일련 번호를 고려하지 않았습니다.
결과는 다음과 같아야합니다
위치 (51 개) 일련 번호 : 22229
위치 (52 개) 일련 번호 : 22221은 22222, 22223, 22224, 22225
업데이트 : 그냥 내 질문이 더 명확하게. 일련 번호가 A, B, C, D, E 인 컴퓨터를 위치 X에서 Y로 이동합니다. 이제 위치 Y에 일련 번호가있는 5 대의 랩톱이 있습니다. 다음으로 일련 번호 A가있는 위치 Y의 랩톱 하나를 위치 X로 다시 이동합니다. 그리고 위치 X에서 위치 Z까지 직렬 F를 가진 또 다른 랩탑 ... 모든 거래 후에 모든 위치에서 랩톱 수량을 알고 싶습니다. (0120) 일련 번호가없는 항목에 대해서도 솔루션을 제공합니다. 예를 들어 위치 A에서 위치 B까지 5 개의 USB 스틱을 이동 한 다음 B에서 C까지 2 개 그리고 마지막으로 A에서 C까지 2 개씩 이동합니다. 각 위치의 수량은 얼마입니까?
일반적인 GROUP BY 규칙은 다음과 같이 말합니다. GROUP BY 절이 지정된 경우 SELECT 목록의 각 열 참조는 그룹화 열을 식별하거나 집합 함수의 인수 여야합니다! – jarlh
@jarlh 귀하의 의견은 불행히도 많이 도움이되지 않습니다 –
'It is not incalculating'로 시작하는 문장을 이해하지 못합니다. Pls는 질문을 명확히합니다. – Shadow