선입선출 쿼리 문의가 있습니다.
상품 주문이 들어왔을 때 a 테이블에서 b 테이블로 항목 이동이 있습니다. (배송)
a 테이블에서 먼저 들어가 있는 상품순으로 b 테이블에 넣는 것입니다.
예를 들어 5개 주문이 들어오면
a 테이블에 2,3,1, 순으로 들어가 있으면 2,3 개를 b 테이블로 보내는 것입니다.
이 로직으로 구현은 했는데 처음에 5개가 a 테이블에 몇 row에 해당하는지
알수 없어 top 15으로 지정을 하고 loop 돌려가면서 비교했습니다.
그런데 15라는게 확실한게 아니라..로직에 문제가 있는거 같은데요...
혹시 다른 방법을 아시나요..
Comment 5
-
catchv
2013.09.23 09:37
-
건우아빠
2013.09.23 20:27
누적치를 계산 하신다음 누적치가 출고 수량보다 크거나 같은 값중 최소값을 찾아 그것보다(누적치최소값보다) 작거나 같은 값들이 대상이 될거구요.
찾은 누적치최소값에서 출고 수량을 뺀 수량이 A테이블에 수정이 되어야 할거구요...
catchv님이 말씀 하신 내용의 쿼리를 분석 해보세요.
-
제시카
2013.09.24 08:04
다음에 내려 보낼때는 A 테이블의 데이블은 건드리지 않고 B 테이블에 내려만 것만 빼고 다시
내려보내야 합니다... B 테이블은 계속 insert만 되니..A 테이블과 B 테이블의 관계는 1대 n (?)이 되는것인데..
조인으로 이미 내려만 데이타를 내리기가 어렵네요...
-
건우아빠
2013.09.24 09:27
제시카님의 질문 내용을 다시 한번 확인 하시기 바랍니다..
읽고 어떤 내용인지가 정확히 표현이 되어 있는지.
내부 업무로직을 알지 못하면 이런 쿼리는 못짭니다.
막연한 질문을 하셨습니다. 답도 막연 합니다. 선입선출은 큐의 의미를 생각하시면 됩니다. 빠져나가야 한다는거죠.....
"A테이블의 데이블은 건드리지 않고 " 빠져나가지 않는다면 무조건 처음부터 계속 돌여야 한다는 결론이 나옵니다..
데이타는 누적이 되고 비교도 해야 하기 때문에 쿼리는 더욱 복잡해지죠....
A테이블 과 동일 한 구조의 테이블을 만드시고 이 테이블에서 빼주는 방법으로 하시는게 로직상 단순해 지지 않을까 봅니다...
-
제시카
2013.09.26 12:28
A 테이블에는 나중에 확정시 빠져나간다고 해서... 그래서 B로 내려갈때마다 이미 B에 내려간 정보를 제외하고 (B 데이타는 유지) (이미 있는지 확인) 내려보내는걸루 했습니다.. 저두 이렇게 복잡한거는 처음이라서;; 설명도 로직 설명도 미비한게 있었네요.. 하튼 빠져나가면 쉬운데... 안된다고 하니... 하튼 의견들 감사합니다. ^^
테이블에 따라 데이터에 따라 선입선출을 구하는 방법은 여러가지가 있을 수 있을 것 같습니다.
google 에서 "MS SQL FIFO"로 검색하시면 제시카님에 맞는 방법을 찾을 수 있을 것 같습니다.