게시판 즐겨찾기
편집
드래그 앤 드롭으로
즐겨찾기 아이콘 위치 수정이 가능합니다.
백엔드 + SQL 질문드립니다
게시물ID : programmer_14388짧은주소 복사하기
작성자 : MioLiquid
추천 : 0
조회수 : 382회
댓글수 : 8개
등록시간 : 2015/11/11 23:56:29
옵션
  • 본인삭제금지
로직 해결이 잘 안 되서 질문드립니다..

현재 로직부터 설명을 드리자면..

A라는 테이블이 있습니다.

 TITLE ID  COND_VAR  COND_VAL  CALC   PRIORITY
AA 1 - - BB 0
AB 2 10 0
BB 1 COND TRUE  CC 1
BB 1 COND FALSE  10 0
CC 1 LIMIT 100 20 1
CC 1 LIMIT 200 15 0


A 테이블에서 Title과 ID가 주어지면, CALC 값을 최종적으로 구해야 합니다.
단, CALC값이 숫자가 아니면 해당 CALC값을 참조해서 최종적으로 숫자가 나와야 합니다.

예를 들어 (AA, 1)이라는 조건을 받았다면, CALC 값이 BB이니 (BB, 1)의 T/F 두 로우를 가져와서 백엔드에서 비교를 합니다.
그리고 False라면 10으로 계산 종료. True라면 CC 값이 숫자가 아니니 다시 (CC, 1) 의 두 로우를 가져와서 비교하게 됩니다.
그리고 LIMIT 값이 100 이냐 200이냐 따진뒤에 CALC 값 리턴을 하게 되고 종료.
-----------------------------------------------------------------------------------------

현재는 while(loop)으로 리턴할 때까지 돌게 되어있습니다.

loop = true;

while (loop) {
    SQL 실행;
    if (COND_VAR == COND)
        COND_VAL 비교;
        CALC 값 = CC;
    if (COND_VAR == LIMIT)
        COND_VAL 비교;
        CALC 값 = 20;  
    
    ...

    if (CALC == 숫자)
       return CALC;
}

대충 이런 구조입니다.

문제는 이런 구조는 분명히 무한루프의 문제도 예상되고 해서 리팩토링 중인데..
처음의 while 루프를 제거할 수 있는 방법은 없을까요?

아무래도 SQL 구문을 몇번 돌려야 할 지가 예상이 되는게 아니라 저런식으로 참조에 참조해서 쭉 가는거라..
어떤 아이디어라도 감사하겠습니다.
   

전체 추천리스트 보기
새로운 댓글이 없습니다.
새로운 댓글 확인하기
글쓰기
◀뒤로가기
PC버전
맨위로▲
공지 운영 자료창고 청소년보호