[SQL] 프로그래머스 LV.3 VIEW 관련 문제

선뀰·2023년 10월 9일
0

1. SQL VIEW 사용하기

VIEW는 하나의 테이블로부터 특정 컬럼들만 보여주거나 특정 조건에 맞는 레코드들만 보여주는데 사용될 수 있다. 두개 이상의 테이블을 조인하여 하나의 VIEW로 사용자에게 보여준다.

  • 하나의 테이블에서 VIEW 사용
    테이블 중 일부 컬럼만 보여주고 싶거나, WHERE절로 필터링한 데이터만 보여주고 싶을 때 사용한다. 테이블에서 어떤 조건을 제외한 테이블을 보여줄 때 사용한다.

  • 복수의 테이블에서 VIEW를 사용
    복수의 테이블을 조인하여 부분적인 데이터를 보여준다.

  • VIEW의 특징 실제로 데이터를 저장하지 않고, 일부분만 보여주는데 중점을 둔다. 뷰 기반 테이블을 수정이 가능하다. 복잡한 SQL작업을 단순화하려는 것이다. 작성된 쿼리를 쉽게 다시 사용할 수 있다. 뷰의 데이터를 수정할 경우 실제 데이터도 같이 변경된다. 뷰로 생성된 가상 테이블에도 데이터를 삽입할 수 있다. (JOIN, UNION, Sub Query 등)으로 만들어진 뷰에서 데이터를 삽입할 수 없다. ORDER BY절을 사용할 수 없다.

2. 관련 문제

  • 문제 : 조회수가 가장 많은 중고거래 게시판의 첨부파일 조회하기
    USED_GOODS_BOARD와 USED_GOODS_FILE 테이블에서 조회수가 가장 높은 중고거래 게시물에 대한 첨부파일 경로를 조회하는 SQL문을 작성해주세요. 첨부파일 경로는 FILE ID를 기준으로 내림차순 정렬해주세요. 기본적인 파일경로는 /home/grep/src/ 이며, 게시글 ID를 기준으로 디렉토리가 구분되고, 파일이름은 파일 ID, 파일 이름, 파일 확장자로 구성되도록 출력해주세요. 조회수가 가장 높은 게시물은 하나만 존재합니다.

VIEW의 키워드 : 두 테이블에서 ~가 가장 높은 첨부파일의 경로를 조회하는 SQL문을 작성하시오

  • 풀기 :
SELECT CONCAT('/home/grep/src/',B.BOARD_ID,'/', B.FILE_ID, B.FILE_NAME, B.FILE_EXT) AS FILE_PATH
FROM USED_GOODS_BOARD AS A JOIN USED_GOODS_FILE AS B ON A.BOARD_ID = B.BOARD_ID
WHERE A.VIEWS = (SELECT MAX(A1.VIEWS)
                FROM USED_GOODS_BOARD AS A1)
ORDER BY B.FILE_ID DESC
profile
공부 하는 방법을 배우는 중

0개의 댓글

Powered by GraphCDN, the GraphQL CDN