param에 따른 조회 조건 변경 0 3 810

by monetoile [SQL Query] [2020.02.12 21:24:16]


안녕하세요.

쿼리에 대한 귀중한 조언을 구합니다.

우선 oracle과 mybatis조합니다.

sql ==>

    with a as (select * from aaa)

        , b as (select * from bbb)

select *

   from ( select *

              from a         -- 1번

           union all

             select *

              from a, b         -- 2번

          union all

             select *

               form b          -- 3번

          )

order by 1

위와 같이 union all로 묶은 sql 입니다.

특정한 멀티조건을 param으로 받아서 조건이 없으면 1,2,3번 모두 union all 조합니다.

조건이 1번이면 1번만,

조건이 1,3번이면 1번,3번만 union all

조건이 1,2,3번 모두 param으로 받으면 조건이 없는 경우와 같이 1,2,3번 모두 union all 조합을 하려고 합니다.

 

mybatis의 if/foeach/choose 등을 이용하여 위와 같은 형태를 만들려고 하는데 아무리 조합해도 만들어지지 않네요.

q&a글도 찾아 봤는데 검색 실력이 부족하여 찾아지지가 않습니다.

일정이 빠듯하여 급히 귀한 말씀 부탁드립니다.

by 마농 [2020.02.13 08:39:34]
SELECT *
  FROM (SELECT *
          FROM a
         WHERE (:p1 IS NOT NULL OR :p1||:p2||:p3 IS NULL)
           AND ...
         UNION all
        SELECT *
          FROM a, b
         WHERE (:p2 IS NOT NULL OR :p1||:p2||:p3 IS NULL)
           AND ...
         UNION all
        SELECT *
          FORM b
         WHERE (:p3 IS NOT NULL OR :p1||:p2||:p3 IS NULL)
           AND ...
        )
;

 


by monetoile [2020.02.13 10:27:06]

말씀 감사합니다.

위 질문에서 "param"은 배열로 넘어 옵니다.

배열로 넘어오는 각각의 param value에 따라서 union 조건을 걸어야 하거든요...
혹시 가능한지요.


by 마농 [2020.02.13 10:36:19]

mybatis 는 모릅니다. SQL 답변 드린거에요.
질문의 쿼리도 너무 막연합니다.
좀 더 구체적인 조건을 적어주셔야 할 듯 하네요.
파라미터가 어떻게 조건에 적용되는 지 등을 알아야 할 듯 하네요.

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