답글등록 시 목록에 답글까지 보이게 하는 쿼리 문의(2) 0 3 642

by 천만달러 [MySQL] [2021.04.26 15:50:49]


<sql id="search">
        <if test="searchType != null">
            <if test="searchType == 't'.toString()">
                AND cms_title LIKE CONCAT('%', #{keyword}, '%')
            </if>
            <if test="searchType == 'c'.toString()">
                AND cms_content LIKE CONCAT('%', #{keyword}, '%')
            </if>
            <if test="searchType == 'w'.toString()">
                AND cms_writer LIKE CONCAT('%', #{keyword}, '%')
            </if>
            <if test="searchType == 'tc'.toString()">
                AND (cms_title LIKE CONCAT('%', #{keyword}, '%')
                OR cms_content LIKE CONCAT('%', #{keyword}, '%'))
            </if>
        </if>
    </sql>
    
    <resultMap type="kr.co.vo.cms_board_vo" id="board_map">
        <id property="cms_bno" column="cms_bno"/>
        <id property="cms_title" column="cms_title"/>
        <id property="cms_writer" column="cms_writer"/>
        <id property="cms_regdate" column="cms_regdate"/>
        <id property="cms_hit" column="cms_hit"/>
    </resultMap>
    
    <resultMap type="kr.co.vo.cms_reply_vo" id="reply_map">
        <id property="cms_bno" column="cms_bno"/>
        <id property="cms_rno" column="cms_rno"/>
        <id property="cms_title" column="cms_title"/>
        <id property="cms_regdate" column="cms_regdate"/>
        <collection property="board" resultMap="board_map"/>
    </resultMap>
    
    <!-- 게시판 목록 -->
    <select id="list" resultMap="reply_map" parameterType="kr.co.vo.SearchCriteria">
        SELECT *
        FROM (
            SELECT cms_bno
                 , cms_title
                 , cms_writer
                 , cms_regdate
                 , cms_hit
            FROM CMS_BOARD
            UNION ALL
            SELECT cms_bno
                 , cms_rno
                 , cms_title
                 , cms_writer
                 , cms_regdate
            FROM CMS_REPLY
        ) A
        WHERE cms_bno > 0
        <include refid="search"></include>
        ORDER BY cms_bno DESC, cms_rno ASC
        LIMIT #{pageStart}, #{perPageNum}
    </select>

 

이런식으로 마이바티스 이용해서 해보려고 했는데

오류가 나서...뭐가 잘못됐는지 도움을...좀 부탁드립니다 ㅠ

 

RE : 아래 답변 감사합니다 확인후에 수정을 했지만 그래도 안되네요 ㅠ

by 마농 [2021.04.26 16:21:10]

1. Union 항목을 일치시켜 주세요.
2. 인라인뷰 알리아스 필수
3. 정렬 항목 추가
4. 문자엔 홑따옴표 사용이 표준 (쌍따옴표는 비표준)
5. repeat 구문 맞게 사용한 건지 의문? 잘못 사용한 듯?
6. OR 조건 사용시 괄호 사용에 유의
- 변경전 : AND a OR b
- 변경후 : AND (a OR b)
 

SELECT *
  FROM (SELECT cms_bno
             , 0 cms_rno         -- 1
             , cms_title
             , cms_writer
             , cms_regdate
             , cms_hit
          FROM cms_board
         UNION ALL
        SELECT cms_bno
             , cms_rno
             , CONCAT('ㄴ', cms_title) cms_title    -- 4,5
             , cms_writer
             , cms_regdate
             , 0 cms_hit         -- 1
          FROM cms_reply
        ) a                      -- 2
 WHERE cms_bno > 0
 ORDER BY cms_bno DESC, cms_rno  -- 3

 


by 마농 [2021.04.26 16:43:31]

union 위 아래 select 항목의 수도 일치시켜 주시고,
resultMap 항목의 수도 일치시켜 주세요.


by 천만달러 [2021.04.26 17:58:40]

감사합니다~!

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