[질문] 현재 레코드와 다음 레코드의 차을 비교 하여 다른 테이
글쓴이: hurryon / 작성시간: 금, 2003/05/23 - 1:35오후
테이블은 다음과 같습니다.
mysql> desc data_info; +-------+---------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------+---------+------+-----+---------+-------+ | code | char(5) | | PRI | | | | start | int(11) | YES | | NULL | | +-------+---------+------+-----+---------+-------+ 2 rows in set (0.00 sec) mysql> desc code_info; +---------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +---------+-------------+------+-----+---------+-------+ | code | char(5) | | PRI | | | | start | int(11) | YES | | NULL | | | size | smallint(6) | YES | | NULL | | | cutline | smallint(6) | YES | | NULL | | +---------+-------------+------+-----+---------+-------+ 4 rows in set (0.00 sec) mysql>
현재 data_info 테이블에는 값이 저장되어 있는 상태이고 code_info 테이블
에는 code와 start 필드만이 값이 저장되어 있습니다.
다음과 같은 쿼리을 썻죠.
insert into code_info (code, start) select distinct * from data_info group by code
어쨌든 data_info 테이블의 내용은 다음과 같습니다.
mysql> select * from data_info; +-------+-------+ | code | start | +-------+-------+ | 01110 | 1 | | 01121 | 16 | | 01122 | 31 | | 01123 | 46 | | 01131 | 61 | +-------+-------+ 5 rows in set (0.00 sec) mysql>
더 많은 레코드가 있는데 위의 예에는 5개만. :-) 위의 테이블에서 현재 레코드
와 다음 레코드의 start 필드의 값의 차을 code_info 테이블의 size 필드에
넣고 싶습니다.
그럼 아마도 다음과 같이 될것입니다.
코드 (01110) 스타트(1) 사이즈(15)
이런식으로 쭉 code_info 테이블에 값을 넣고 싶은데 쿼리문 하나로
해결할수는 없을까요?
물론 쿼리문을 때릴때 프로그램에서 변수을 지정해 놓고 다음 레코드의 값과
현재 레코드의 값을 비교하면서 테이블에 넣을수도 있지만 그렇게 하면
속도가 현져히 떨어 질거 같아서요.
Forums:
쿼리을 좀 변경해서...
쿼리을 다음과 같이 간단히 해도 되겠네요.
저 위의 커리을 좀 수정하면 될거 같은데요...으흠...
반쪽 짜리...자답...
이렇게 하니...차을 구할수가 있긴 한데...여러 테이블에서 값을 가져와 하나의
테이블에 값을 넣으려니...잘 안되네요.
T.T
오늘도 막차타고 가야 겠네.
위의 두개의 쿼리을 하나로 합칠려고 합니다. 아마도 group by 절 때문에 그런거 같은데...으흠...
저는 이렇게 쿼리을 날렸습니다.
(생략)
으흠...카운트 된 결과값도 이상하게 나오고...code나 start도 이상하게 나옵니다. 어떻게 하면 한번의 쿼리로
제대로 나오게 할수 있을지요?
어제 집에 들어 갔습니다...
흐. 해결했습니다. 혹시라도 참고하세요.
:-)
조인연산에 대해 좀 더 봐야 할거 같네요. 음냐. 거의 반나절이 넘게 고생했던걸
정말 우리 팀장(여자)은 1-2분 만에 답에 가까운 쿼리을 알려 주세요.
짬밥은 무서운가 봅니다.
댓글 달기