[SQL] Programers SELECT 문제 풀이 9번 (MySQL JOIN 함수)

juyeon lee·2024년 1월 12일

SQL TEST

목록 보기
7/8

프로그래머스 SQL 고득점 Kit

🖥️SELECT 9번

과일로 만든 아이스크림 고르기


🔹문제
상반기 아이스크림 총주문량이 3,000보다 높으면서 아이스크림의 주 성분이 과일인 아이스크림의 맛을 총주문량이 큰 순서대로 조회하는 SQL 문을 작성해주세요.

🗝️정답

SELECT A.FLAVOR 
FROM FIRST_HALF A JOIN ICECREAM_INFO B
ON A.FLAVOR = B.FLAVOR
WHERE A.TOTAL_ORDER	>= 3000 AND B.INGREDIENT_TYPE = 'fruit_based'
ORDER BY A.TOTAL_ORDER DESC;

💡오답 노트

  1. ORDER BY B.TOTAL_ORDER로 지정
    ➡️ A(=FIRST_HALF) 테이블의 TOTAL_ORDER 컬럼을 지정해야함
    ORDER BY A.TOTAL_ORDER DESC;

📖JOIN 함수


두 개 이상의 테이블들을 연결하여 데이터를 출력하는 함수
➡️ 관계형 데이터 베이스의 가장 큰 장점이면서 대표적인 핵심 기능

🏷️JOIN 관계 성립

  • 일반적인 경우 행들은 PK나 FK 값의 연관에 의해 JOIN이 성립
  • 어떤 경우에는 PK,FK 관계까 없어도 논리적인 값들의 연관만으로 JOIN 관계가 성립 가능
  • FROM 절에 여러 테이블이 나열되더라도 데이터를 처리할 때는 두 개의 집합 간에만 JOIN 성립

3개의 테이블을 JOIN한다면?

  • 하나의 SQL 문장에서 여러 테이블을 조인해서 사용할 수 있음!
  • FROM 절에서 A,B,C 3개의 테이블이 나열
    ➡️ 특정 2개의 테이블 먼저 조인 후, 조인된 새로운 결과 집합과 남은 한 개의 테이블이 다음으로 조인

🔖FROM절 JOIN

기본 구조

SELECT A.컬럼명, B.컬럼명 
FROM 테이블1 A JOIN 테이블2 B
ON A.컬럼명1 = B.컬럼명2
(WHERE 조건절;)

예시

선수 테이블과 팀 테이블에서 선수 이름과 소속된 팀의 이름을 출력하시오.

SELECT A.NAME, B.TEAM_NAME
FROM PLAYER A JOIN TEAM B
ON A.PLAYER_CODE = B.PLAYER_CODE;

0개의 댓글