2017-09-11 8 views
0
<select id="BBSManageDAO.selectBbsSchdulManageList" parameterClass="BoardVO" resultMap="schdulProgramList"> 
<![CDATA[ 
SELECT NTT_ID, BBS_ID, NTT_NO, NTT_SJ, SUBSTR(NTT_CN,1,100) NTT_CN, CATEGORY, FRST_REGIST_PNTTM, NTCE_BGNDE, NTCE_ENDDE 
,FIELD1, EVN_END_DATE, FIELD2, TELL_NO, USE_AT 
FROM TN_BBS A 
WHERE 1=1 
AND A.USE_AT = 'Y' 
AND (
BBS_ID = 'education01_main' or BBS_ID = 'course01_main' or 
BBS_ID = 'feestival01_main' or BBS_ID = 'reading01_main' 
    ) 
]]> 
<isNotEmpty property="searchCondition2"> 
<isEqual property="searchCondition2" compareValue="DAILY" prepend="AND"> 
<![CDATA[ #searchSdate# >= FIELD1 AND #searchSdate# <= EVN_END_DATE ]]> 
</isEqual> 
isEqual property="searchCondition2" compareValue="WEEK" prepend="AND"> 
<![CDATA[ (#searchBgnDe# <= FIELD1 AND #searchEndDe# >= FIELD1) OR (#searchBgnDe# <= EVN_END_DATE AND #searchEndDe# >= EVN_END_DATE) OR (#searchBgnDe# >= FIELD1 AND #searchEndDe# <= EVN_END_DATE) AND USE_AT='Y']]> 
</isEqual> 
</isNotEmpty> 
<![CDATA[ 
ORDER BY FIELD1 ASC 
]]> 
</select> 

이 내 SQL_Oracle.xml오라클 쿼리가 제대로

이 쿼리의 내부 코드의 일부 작동하지 않는 것은 조건은 약 (기사가 조건을 충족하는 경우 이벤트의 일부 기사 선택에 관한 것입니다 날짜).

두 개의 API가 있습니다. 하나는 매일이고 다른 하나는 매주입니다.

매일 쿼리 사용자는 특정 날짜 (#searchSdate#)를 매개 변수로 보내고 해당 날짜에 DB 검색 이벤트를 보냅니다.

주 단위로 주별 사용자에게 주간을 보내 주일의 시작일과 종료일을 서버에 알리고 그 주에 진행되는 이벤트를 되돌려 보냅니다. 내가

WHERE 1=1 
AND A.USE_AT = 'Y' 

을 쓴하지만 나는 그들이 나에게 'N'USE_AT 데이터로 이벤트를 보내는 WEEK 검색을 사용하는 경우

문제입니다.
DAILY이 동일한 데이터를 보내면 상관하지 않습니다. 그러나 그들이하지 않는다
마침내 내가 USE_AT='Y '의 끝에 WEEK의 끝을 더했을 때 그들은 일했다.

그러나 여전히 나는 왜 내 이바티스 문법의 오류가 있을지 모릅니다.

누구에게 무슨 문제가 있는지 알고 있나요?

답변

0

위 쿼리에 문제가있을 수 있습니다. 또는에 포함 된 모든 주변 brakets OR 비교에 쿼리를 수정하십시오 :

((#searchBgnDe# <= FIELD1 AND #searchEndDe# >= FIELD1) 
OR (#searchBgnDe# <= EVN_END_DATE AND #searchEndDe# >= EVN_END_DATE) 
OR (#searchBgnDe# >= FIELD1 AND #searchEndDe# <= EVN_END_DATE)) 
AND USE_AT='Y' 

은 또한 당신의 SQL_Oracle.xml 파일을 XML 문제를 가지고 아래의 두 번째 isEqual가 제대로

태그가되지 않는 것처럼