<중고거래 게시판 정보를 담은 USED_GOODS_BOARD 테이블>
<중고거래 게시판 첨부파일 정보를 담은 USED_GOODS_REPLY 테이블>
<문제>
USED_GOODS_BOARD와 USED_GOODS_REPLY 테이블에서 2022년 10월에 작성된 게시글 제목, 게시글 ID, 댓글 ID, 댓글 작성자 ID, 댓글 내용, 댓글 작성일을 조회하는 SQL문을 작성해주세요. 결과는 댓글 작성일을 기준으로 오름차순 정렬해주시고, 댓글 작성일이 같다면 게시글 제목을 기준으로 오름차순 정렬해주세요.
<나의 첫 번째 풀이>
select a.title,
a.board_id,
b.reply_id,
a.writer_id,
b.contents,
date_format(b.created_date, '%Y-%m-%d') as created_date
from used_goods_board a inner join used_goods_reply b on a.board_id=b.board_id
where a.created_date like '2022-10%'
order by 6, 1
<결과 값>
결과적으로는 틀린 답이라고 나왔다. ^^ .....
결과값이랑 같은데 뭐가 문제지 ....라고 생각하던 찰나에
내가 필요한 컬럼 중 나는 a.writer_id로 게시글 작성자를 가져왔는데 알고 봤더니 댓글 작성자를 가져와야 하는 것이었다 .....
눈을 뜨고 찾아봐도 다른 점이 없었는데 이거 때문에 계속 틀렸다고 나왔던 것이다 ㅠㅠㅠㅠ 시간만 날렸다 ...
다음에 문제 풀때는 꼭 신중하게 잘 읽고 풀어야겠다 !
<최종 풀이>
select a.title,
a.board_id,
b.reply_id,
b.writer_id, #댓글 작성자로!
b.contents,
date_format(b.created_date, '%Y-%m-%d') as created_date
from used_goods_board a inner join used_goods_reply b on a.board_id=b.board_id
where a.created_date like '2022-10%'
order by b.created_date, a.title
<설명>
- inner join을 통해 board_id로 두 테이블 결합 --> used_goods_board a inner join used_goods_reply b on a.board_id=b.board_id
- 2022년 10월에 작성된 게시글 가져와야 하므로 where절 사용 --> a.created_date like '2022-10%'
- 각 필요한 컬럼 잘 읽어보고 가져오기, 결과값이랑 같은 작성일이 나와야 하므로 date_format 사용 --> date_format(b.created_date, '%Y-%m-%d') as created_date
- 순서는 문제에 나와있듯이 댓글 작성일을 기준으로 오름차순 정렬해주시고, 댓글 작성일이 같다면 게시글 제목을 기준으로 오름차순 정렬--> order by b.created_date, a.title
'CODEKATA' 카테고리의 다른 글
[MySQL] 특정기간 동안 대여 가능한 자동차들의 대여비용 구하기 (0) | 2024.08.12 |
---|---|
[MySQL] 입양 시각 구하기(2) (2) | 2024.08.07 |
[MySQL] 오프라인/온라인 판매 데이터 통합하기 (0) | 2024.08.05 |
[Python] 제일 작은 수 제거하기 (0) | 2024.08.02 |
[MySQL] 그룹별 조건에 맞는 식당 목록 출력하기 (0) | 2024.08.02 |