2014-06-23 4 views
0

이 같은 출력을하고자 위에 나는 테이블에서 당신이 괜찮다면 내이 질문에 대한 후속 질문 .. 총 재고 재고 mysql을

count total flow inventory in and out php mysql

Table A 
======================================================= 
**id** | **code** | **status** | **total** | **date** | 
1  | B01  | IN   | 500  |2013-01-15| 
2  | B01  | OUT  | 100  |2013-01-20| 
3  | B01  | OUT  | 200  |2013-02-01| 
4  | B01  | IN   | 300  |2013-02-05| 

있습니다.

Table A 
=================================================================================== 
**id** | **code** | **status** | **total** | **date** | **stock** | 1st month stock 
1  | B01  | IN   | 500  |2013-01-15| 500  | - 
2  | B01  | OUT  | 100  |2013-01-20| 400  | 500 
3  | B01  | IN   | 200  |2013-02-01| 600  | 400 
4  | B01  | OUT  | 300  |2013-02-05| 300  | 600 
5  |   |   |   |   |   | 300 

어떻게하면 mysql을 사용할 수 있습니까? 방법이 있니? 내가 MySQL로 정말 새로운 해요 도와, 내 previous question에서이 방법

select t.*, @stock := @stock + case when status = 'IN' 
            then total 
            else -total 
           end as stock 
from your_table t 
cross join (select @stock := 0) s 
order by t.id 

를 사용하는 것을 달성 이미 해요 주식 열의

당신이 이미 가지고있는, 당신이 수를 바탕으로

답변

1

SELECT 목록에 다른 표현식을 추가하십시오.

NB @stock의 현재 값 반환은 새 값이 SELECT 목록의 @stock에 할당되기 전에 올 필요가 있습니다. 따라서 열의 순서는 원하는 출력에 표시된 것과 약간 다릅니다.


현재 검색어에 따르면, SELECT 목록에 새 표현식을 추가하여 다른 열 (예 :

select t.* 
    , @stock AS `1st month stock` 
    , @stock := @stock + case when status = 'IN' 
           then total 
           else -total 
          end as stock 
from your_table t 
cross join (select @stock := 0) s 
order by t.id 
+0

그 문제에 대한 예를 들어 주시겠습니까? @spencer7593 –

+1

@Eka RudiAnto : 예제 데이터와 예제 출력에 따라 필요한 것은 현재 쿼리의 SELECT 목록에 표현식을 추가하는 것입니다 (즉,'@ 스톡 '의 값이 이전 행에서 반환되었습니다.) 내 대답에 전체 쿼리를 추가했습니다. – spencer7593

+0

아래에 다른 행이 표시되지 않았지만 전체적으로 작동합니다. :) 감사합니다. 그러나 나는 아직도 왜 작동하는지 이해하지 못합니까? 그것에 대해 나에게 좋은 기사를 추천 해 주시겠습니까? 그것은 당신에게 편리하지 않다면 .. 괜찮습니다. :) 도와 주셔서 감사합니다 ... –