컬럼값이을 뽑아올라고 하는데 잘 안됩니다. 0 2 1,797

by 성이 [SQL Query] [2014.12.01 14:36:22]



SELECT * 
  FROM (
        SELECT CEIL(ROW_NUMBER() OVER (ORDER BY SEQ DESC) / 20) AS page
             , SEQ AS m_seq
             , B_IDX
             , EVENT_NAME
             , BUSINESS_TYPE
             , BUSINESS_DETAILED
             , TARGET
             , START_DAY
             , END_DAY
             , PROGRESS_YN             
             , CASE WHEN BUSINESS_TYPE = 'type1' THEN 
                         (SELECT COUNT(B_IDX) AS COUNT FROM TPC_REQUEST_TYPE1_01 a WHERE a.B_IDX = b.B_IDX )  
                    WHEN BUSINESS_TYPE = 'type2' THEN 
                         (SELECT COUNT(B_IDX) AS count FROM TPC_REQUEST_TYPE2_01 a WHERE a.B_IDX = b.B_IDX ) 
                    WHEN BUSINESS_TYPE = 'type3' THEN     
                         (SELECT COUNT(B_IDX) AS count FROM TPC_REQUEST_TYPE3_01 a WHERE a.B_IDX = b.B_IDX )
                END AS req_mem 
             ,MAX_MEMBER 
             
         FROM TPC_REQUEST_REGI b 
        WHERE B_IDX IN(
                    SELECT B_IDX FROM TPC_REQUEST_TYPE1_01 WHERE USER_ID = 'innofly'
                    UNION ALL
                    SELECT B_IDX FROM TPC_REQUEST_TYPE2_01 WHERE USER_ID = 'innofly'
                    UNION ALL
                    SELECT B_IDX FROM TPC_REQUEST_TYPE3_01 WHERE USER_ID = 'innofly'
         )
              
 --검색쿼리

) WHERE page = 1

----------------------------------------------

전체적인 로직은 관리자가 교육모임 신청하는 게시물을 등록합니다. 모집하는 폼은 3가지입니다.

관리자가 3가지 폼중 하나를 선택해서 등록하면 사용자가 등록을 하는 것입니다.

관리자가 입력하면 TPC_REQUEST_REGI 테이블에 저장이되고

사용자가 입력하는 테이블은 관리자가 올리는 폼이 type1, type2, type3 이냐에 따라

TPC_REQUEST_TYPE1_01 , TPC_REQUEST_TYPE2_01 , TPC_REQUEST_TYPE3_01

에 저장이 됩니다..

사용자가 내가 신청한게 뭐가 있는지 리스트를 뿌려주는것인데요

신청 테이블 3개를 다 합쳐서 검색을 하는건데 문제는

TPC_REQUEST_TYPE1_01 , TPC_REQUEST_TYPE2_01 , TPC_REQUEST_TYPE3_01

이넘들의 각각의 seq컬럼 값들을 뽑아 와야 하는데 어떻게 해야할지 감이 잘 안오네요 ㅠㅠ

by 마농 [2014.12.01 16:15:05]
SELECT *
  FROM (SELECT ROW_NUMBER() OVER(ORDER BY b.seq DESC, a.seq DESC) rn
             , b.seq m_seq
             , a.seq s_seq
          FROM tpc_request_regi b
             , (SELECT 'type1' business_type, b_idx, seq FROM tpc_request_type1_01
                UNION ALL SELECT 'type2', b_idx, seq FROM tpc_request_type2_01
                UNION ALL SELECT 'type3', b_idx, seq FROM tpc_request_type3_01
                ) a
         WHERE a.b_idx = b.b_idx
           AND a.business_type = b.business_type
           AND a.user_id = 'innofly'
        )
 WHERE rn >= :Page * 20 - 20 + 1
   AND rn <= :Page * 20
;

Row_number 를 가공하여 조건을 주면 Top N 쿼리의 Stop 효과가 없습니다.
Row_number 를 가공하지 말고 그대로 사용하여야 합니다.


by 성이 [2014.12.02 20:49:13]

윽~ 좀 늦게 확인했습니다 답변 정말 감사드립니다 ^^

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