[Mysql][프로그래머스](Programmers)Lv1 조건에 부합하는 중고거래 댓글 조회하기

Posted by MIKY   2025-03-24

Programmers   mysql   조건에 부합하는 중고거래 댓글 조회하기   프로그래머스   Lv1   inner join  

출처:Programmers Mysql Lv1 조건에 부합하는 중고거래 댓글 조회하기

정답 코드

```
SELECT TITLE,USED_GOODS_BOARD.BOARD_ID,REPLY_ID,USED_GOODS_REPLY.WRITER_ID,USED_GOODS_REPLY.CONTENTS,DATE_FORMAT(USED_GOODS_REPLY.CREATED_DATE, '%Y-%m-%d') CREATED_DATE

FROM USED_GOODS_BOARD Inner join USED_GOODS_REPLY On USED_GOODS_BOARD.BOARD_ID=USED_GOODS_REPLY.BOARD_ID

WHERE USED_GOODS_BOARD.CREATED_DATE LIKE '2022-10%'
order by USED_GOODS_REPLY.CREATED_DATE, TITLE
```

해설

SELECT TITLE,USED_GOODS_BOARD.BOARD_ID,REPLY_ID,USED_GOODS_REPLY.WRITER_ID,USED_GOODS_REPLY.CONTENTS,DATE_FORMAT(USED_GOODS_REPLY.CREATED_DATE, '%Y-%m-%d') CREATED_DATE -(1)

FROM USED_GOODS_BOARD Inner join USED_GOODS_REPLY On USED_GOODS_BOARD.BOARD_ID=USED_GOODS_REPLY.BOARD_ID -(2)

WHERE USED_GOODS_BOARD.CREATED_DATE LIKE '2022-10%' -(3)

Order by USED_GOODS_REPLY.CREATED_DATE, TITLE -(4)

1.원하는 정보:Select 필요한 정보: 게시글 제목, 게시글 ID, 댓글 ID, 댓글 작성자 ID, 댓글 내용, 댓글 작성일로 되어있기 때문에 원하는 조건에 맞춰서 select 문을 작성해준다

하지만 여기에서 이 그대로 하나만 작성을 하게 된다면 하나의 오류를 마주 할 수 있게된다.
Error: " " in field list is ambiguous
그렇기에 정확히 어느 테이블의 무엇을 불러올 지 정확히 명시를 해줘야한다.
ex)USED_GOODS_BOARD.BOARD_ID

2.두 가지 테이블의 정보를 활용하는 조건에 따라 조인을 생각할 수 있습니다. ( 단, 해당 테이블에서는 필요한 내용이 양쪽 테이블에 모두 있기 때문에 내부 조인을 활용하겠습니다.)

해당 문제에서는 각 작성 게시글은 goods_board의 경우 하나의 게시글 아이디에 하나의 글이기에 board_id가 기본키라 할 수 있습니다. 하지만 반대쪽은 하나의 게시글에 여러개의 댓글이 가능하기에 goods에 comment 테이블을 조인을 하는게 좋습니다.

3.조건에 따라 2022년 10월에 해당하는 작성글을 찾기에 like 2022%으로 조건을 제한할 수 있습니다.

특정 날짜를 여러 개를 할 때는 in 을 활용하는 것이 더 좋을 수 있습니다.

  1. 댓글 작성일 > 작성 제목 순으로 나열하는 것이 조건으로 제시되었기 USED_GOODS_REPLY.CREATED_DATE, TITLE으로 하였습니다.

    나열 되는 순서에 따라 작성이 되어야 1번째 순서로 나열된 후 해당 조건의 동일한 조건들에 한하여 2번째 제시된 조건으로 나열이 됩니다.

Comments