쿼리 또는 프로시저로 해결가능한 문제인지 궁금합니다. 0 3 253

by 장정현 쿼리 프로시저 [2019.02.08 09:39:03]


현재 데이터베이스를 마이그레이션 하는 작업을 하고 있습니다.

문제가 되는 부분은 파일 데이터인데요

EX)
 

idx bidx filenames regdate
1 12 a.txt 2019-02-08 00:00:00
2 12 b.txt 2019-02-08 00:00:00
3 13 c.txt 2019-02-08 00:12:00

 

위와 같은 구조로 관리되고 있었습니다.

게시글과 첨부파일은 1:n 의 관계입니다.

마이그레이션 대상 프로그램에서는 파일이 타겟팅하는 필드(file+{첨부파일 순서})에 대한 명세 정보가 필요합니다.

EX)
 

idx bidx filed filenames regdate
1 12 file1 a.txt 2019-02-08 00:00:00
2 12 file2 b.txt 2019-02-08 00:00:00
3 13 file1 c.txt 2019-02-08 00:12:00
4 13 file2 d.txt 2019-02-08 00:12:00
5 13 file3 e.txt 2019-02-08 00:12:00


위와 같은 형태로 filed값이 표기되어야합니다.
 

데이터베이스는 MariaDB를 사용하고 있으며 innoDB 엔진을 사용하고 있습니다.

위와 같이 만들고자 할때 쿼리 또는 프로시저로 해결이 가능할까요?

제 수준에서는 쿼리가 생각이 나지 않아 프로그램단으로 처리를 해야될 것 같다고 생각은 하고 있습니다만, 혹시 쿼리나 프로시저로 처리가 가능하다면 방법을 알려주시면 감사하겠습니다!

by 장정현 [2019.02.08 10:39:30]

자문자답이지만 해결했습니다.

생각해보니 파티션을 나눠서 계산을 하면되네요.

CONCAT('file',ROW_NUMBER() OVER (PARTITION BY bidx ORDER BY regdate)) AS feild


by 마농 [2019.02.08 10:45:36]

분석함수 지원 가능 버전이라면 ROW_NUMBER 쓰시면 됩니다.
정렬 기준으로는 동일한 regdate 보다는 유일한 idx 쓰시는게 좋을 듯 하네요.


by 장정현 [2019.02.08 13:25:19]

네 예시에서는 regdate 값을 동일하게 표기하였으나 사실 밀리세컨즈 단위로 조금씩 차이가 납니다.
그래서 아마 제가 원하는 결과를 얻은것 같습니다.

말씀해주신 idx 로 정렬을 하는게 맞는것 같네요 바꿔야겠어요 ㅎㅎ 답변 감사합니다 ^^

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입