[mariaDB_LEFT JOIN 예제(_feat.Mybatis
2022. 5. 15. 19:12ㆍ[DB]/[MariaDB]_mariadb
728x90
반응형
쿼리]
<select id="listQna" resultType="hashMap">
SELECT q.boardnum,
q.boardregdate,
q.board_name,
q.custname,
t.custno AS custnumber
FROM boardlist q
LEFT JOIN customer t ON q.custname = t.custNM
AND t.auth = 'user'
WHERE q.custname = #{user_name}
ORDER BY boardnum DESC
LIMIT #{startRow}, #{endRow}
해당 쿼리는 예시입니다.
태이블 구조]
가져오고 싶은 값]
리스트 출력시 boardlist 값을 보여주면서 해당 글을 작성한 custno 의 값을 같이 가져오기 위해
JOIN 사용
또한 가져온 값은 customer 에서 auth의 컬럼의 user 여야 하며 boardnum은 내림차순,
추가로 입력한 시작, 끝 값을 기준으로 잘라서 와야 합니다 -> 페이징 처리를 위함
설명]
Join 하여 가져오고 싶은 값은
SELECT q.boardnum,
q.boardregdate,
q.board_name,
q.custname,
t.custno AS custnumber
로 가져옵니다.
t.custno 는 customer 에 있는 값이며, 출력시 hasMap의 키 값은 custnumber 가 됩니다.
해당 t.custno 를 가져오기 위해서는 LEFT JOIN 을 해야합니다.
FROM boardlist q
LEFT JOIN customer t ON q.custname = t.custNM
AND t.auth = 'user'
기준이 되는 boarlist 태이블을 q 로 잡고
기준이 되는 테이블의 custname 의 컬럼 값과 customer 테이블의 custNM 값과 값은 값을 가져옵니다.
또한 그 값은 customer 태이블의 auth 컬럼의 값이 user 여야 합니다.
WHERE q.custname = #{user_name}
ORDER BY boardnum DESC
LIMIT #{startRow}, #{endRow}
where 를 사용해서 boardlist 의 custname이 입력받은 값과 같아야 하며,
해당 값은 boardlist 의 boardnum 컬럼의 값의 내림차순으로 반환되고
입력받은 처음과 끝 번호로 잘라서 hasmap 형태로 반환되게 됩니다.
이런식으로 JOIN 하여 원하는 형식의 테이블을 반환하도록 하였습니다
728x90
반응형