[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
반응형