ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Join
    DB/Postgresql(DB) 2023. 11. 28. 00:11

    출저: 홍팍 (https://www.youtube.com/@hongpark)

    이 블로그 기록은 개인 공부용 기록입니다.

     

     

    - INNER JOIN 예시 모음

    더보기

    1. 예시 사진#1에 달린 모든 댓글내용 과 작성자 닉네임을 조회하시오

     

    SELECT 
     comments.body,  -- 댓글 내용
     users.nickname  -- 작성자 네임
    FROM 
     comments
    Join users on  -- users를 붙임
     users.id = comments.user_id
     WHERE 
     comments.photo_id = 1
     ;

     

     2. 사진#5의 파일명과 사진 게시자 닉네임을 조회하시오.

    SELECT 
    photos.filename, users.nickname
    FROM
    photos 
    Join users ON 
    users.id = photos.user_id
    where
    photos.id = 5;

    3. "사진#2"  좋아요한 사용자 "닉네임" 과 대상 사진의 "파일명"


    SELECT 
    users.nickname, 
    photos.filename
    FROM
    likes 
    JOIN users ON 
    users.id = likes.user_id
    JOIN photos ON
    photos.id = likes.photo_id
    WHERE 
    photos.id = 2

    ;

     

    - LEFT JOIN 예시 모음(자주쓰임)

    : 공통적인 부분 뿐만아니라 왼쪽의 데이터를 모두 가져온다.

    공통된 부분을 우선 출력하고 데이터가 없는 값들은 null값으로 표현 된다.

    더보기

     

    1. 모든 사진의 "파일명"을 조회하시오. 게시자가 있다면 "닉네임"도 함께 가져올것.

    SELECT 
     photos.filename,
     users.nickname
    FROM 
      photos
      LEFT JOIN users ON
     users.id = photos.user_id
    ;

     

     

    2.  모든 댓글 "내용"을 조회하시오. 단, 댓글이 달린 사진의 "파일명"도 함께 가져올것 

    SELECT
    comments.body,
    photos,filename
    FROM
    comments 
    left join photos ON
    photos.id = comments.photo_id;

     

     

     

    - 실전 문제 예시

    더보기

     

     

    -- 1 : 홍팍이의 모든 주문 목록은?
    SELECT 
    *
    FROM
     users
     JOIN orders ON 
      orders.user_id = users.id
     WHERE 
     users.nickname = '홍팍'
      ;
      
      -- 2 : 홍팍이의 모든 주문 횟수는?
    SELECT 
     COUNT(*)
    FROM
     users
     JOIN orders ON 
      orders.user_id = users.id
     WHERE 
     users.nickname = '홍팍'
      ;
      
      --3 : 홍팍이의 모든 주문별 결제 금액을 다음과 같이 조회하시오.
      SELECT 
      users.nickname AS "주문자명",
      orders.id AS "주문번호",
      payments.amount AS "결제금액"
      FROM
      users
      JOIN orders ON 
      orders.user_id = users.id
      AND 
      users.nickname = '홍팍'
      LEFT join payments ON
      payments.order_id = orders.id 
      ;
      
      -- 홍팍이의 총결제 금액은?
      SELECT 
       SUM(payments.amount) 
      FROM
      users
      JOIN orders ON 
      orders.user_id = users.id
      AND 
      users.nickname = '홍팍'
      LEFT join payments ON
      payments.order_id = orders.id 
      ;
      
      -- 상품#1 돈까스의 총판매 금액은 51,600원이다. 이를 쿼리를 통해 조회하시오.
      -- 5: 상품#1 돈까스의 총 판매금액은?
      SELECT 
       SUM(products.price * order_details.count)
      FROM 
       products 
      JOIN order_details ON
      order_details.product_id = products.id 
      AND 
      products.id =1
      JOIN orders ON 
       orders.id = order_details.order_id
        AND 
    orders.status = 'DELIVERED'
      ;
      
      
     


      
      

     

     

    출저: 홍팍 (https://www.youtube.com/@hongpark)

    이 블로그 기록은 개인 공부용 기록입니다.

    'DB > Postgresql(DB)' 카테고리의 다른 글

    그룹필터링 , 정렬, 조회 개수 지정  (0) 2023.11.28
    그룹화(Group By 와 집계 함수)  (0) 2023.11.28
    primary key & Foreign Key  (0) 2023.11.27
    시간값 필터필(타임스탬프,extract,to_char)  (1) 2023.11.27
    WHERE 절  (1) 2023.11.27
Designed by Tistory.