database.sarang.net
UserID
Passwd
Database
DBMS
MySQL
PostgreSQL
Firebird
ㆍOracle
Informix
Sybase
MS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
Oracle Q&A 39716 게시물 읽기
No. 39716
동적쿼리 참 어렵네요. 조금만 도와주세요.
작성자
김기철
작성일
2012-10-31 11:44
조회수
6,516

MSSQL을 이용한 동적 쿼리입니다. 아래 소스와 같은 상황입니다.

처음 검색을 하면 a_viewyn의 값을 잘 출력을 하는데요.

 

동적 쿼리를 이용해서 원하는 값만 추출을 하고 싶은 경우에는 열 이름이 없다고 나오네요.

아무래도 별칭이라서 조건문 where 에 안 먹히는 것 같은데

이거 해결 하는 법 없나요?

 

가정에 무궁한 발전이 있기를 바랍니다.

 아래는 jsp 앞단 선택 소스 입니다.

체크 박스를 선택 했을때 값이 넘어가게 됩니다.

<th >전시여부</th>
      <td>&nbsp;
       <form:checkbox path="psviewyn" label="전체" value="" class="noborder" />
       <form:checkbox path="psviewyn" label="전시" value="Y" class="noborder" />&nbsp;
       <form:checkbox path="psviewyn" label="미전시" value="N" class="noborder" />  

 </td>

 아래는 ibatis 넘어온 값으로 동적쿼리가 실행 되는 곳 입니다.

<select id="selectBannerList" parameterClass="mallBanner" resultClass="mallBanner" remapResults="true">
  
 SELECT
 a.bannerseq                       AS bannerseq
  ,a.lgrp                           AS lgrp
  ,dbo.fn_codenm(a.banlocation)     AS banlocation
  ,a.bantitle                       AS bantitle
   ,a.sort                          AS sort
  ,a.reguserid                      AS reguserid
  ,a.regdate                        AS regdate
  ,a.startdate                    AS startdate
  ,a.enddate                      AS enddate
  ,a.moduserid                      AS moduserid
  ,a.moddate                        AS moddate
  ,a.confyn        AS confyn
  ,       CASE WHEN b.sort = '10000552' THEN 'Y'
                             WHEN b.sort = '10000553' THEN 'Y'
                             WHEN b.sort = '10000554' THEN 'Y'
                             WHEN b.sort = '10000555' THEN 'Y'
                             WHEN b.sort = '10000556' THEN 'Y'
                 ELSE 'N'
                 END AS 'a_viewyn'
  ,a.muserid       AS muserid
  ,a.mallconfdate     AS mallconfdate
  ,     CASE WHEN b.sort = '10000552' THEN '메인배너'
                             WHEN b.sort = '10000553' THEN '상단좌측'
                             WHEN b.sort = '10000554' THEN '상단우측'
                             WHEN b.sort = '10000555' THEN '하단좌측'
                             WHEN b.sort = '10000556' THEN '하단우측'
                 ELSE ''
                 END AS 'a_sort'
   FROM dbo.T_MALL_BANNER_INFO a
           left outer join dbo.T_MALL_BP_MAIN_INFO b
       on a.muserid = b.muserid and a.bannerseq =b.bannerseq
  WHERE 1=1
  <isEqual property="temp" compareValue="10000011">
   AND  a.muserid = #muserid#
  </isEqual>


  <isNotEmpty prepend="AND" property="psviewyn">
      CHARINDEX(#psviewyn#, a_viewyn)<![CDATA[>]]>0
    </isNotEmpty>


     <isNotEmpty prepend="AND" property="psconfyn">
      CHARINDEX(#psconfyn#, a.confyn)<![CDATA[>]]>0
     </isNotEmpty>
     <include refid="support.sql.map.listPagingTail"/>
 </select>

이 글에 대한 댓글이 총 1건 있습니다.

 동적쿼리를 사용하시는 것 보단 파라미터를 주시구요.

UNION ALL 로 사용하시는 것이 좋을 것 같습니다.

 

SELECT 1 FROM DUAL WHERE '1' = :PARAMETER

UNION ALL

SELECT 2 FROM DUAL WHERE '2' = :PARAMETER

 

JSP 에서 파라미터를 받아 매핑해주면 1 일때는 위의 쿼리가...

2일때는 아래의 쿼리가 실행 되겠지요.

김동한(marantz)님이 2012-11-05 10:09에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
39719통계 문의 드립니다...
음..
2012-10-31
5041
39718날짜와 날짜 사이 구하는 쿼리 질문이요. [1]
오잉
2012-10-31
5475
39717소숫점 없애기 [1]
나재호
2012-10-31
4940
39716동적쿼리 참 어렵네요. 조금만 도와주세요. [1]
김기철
2012-10-31
6516
39715비교하여 데이타 move?? [3]
제발
2012-10-31
5819
39714윈도우 오라클 폴더째 이전 가능할까요?
이상진
2012-10-30
4784
39713[너무 급합니다.]SYS.AUD$ 테이블을 8192(으)로 SYSTEM 테이블스페이스에서 확장할 수 없습니다 [4]
김덕호
2012-10-30
9106
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.017초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다