영화(film)와 카테고리(category)를 연결하여 각 영화의 제목과 카테고리명을 출력하시오.

 

🔎 '선생님'께 쓴 쿼리

 SELECT film.title, category.name FROM film 
 JOIN film_category ON film.film_id = film_category.film_id 
 JOIN category ON film_category.category_id = category.category_id;

 

 

🔎 '내'가 쓴 쿼리

SELECT film.title, category.name 
FROM film_category
JOIN film ON film.film_id = film_category.film_id
JOIN category ON category.category_id = film_category.category_id;

 

✅ 결론: 선생님 쿼리와 같은 결과가 나옵니다.

 

✅ 이유

이 쿼리는 다음과 같은 관계를 올바르게 반영하고 있어요:

  • film_category는 중간 테이블로서,
    • film_id로 film과,
    • category_id로 category와 연결됩니다.

따라서 순서만 바뀌었을 뿐, 논리 구조는 선생님의 쿼리와 동일합니다:

 

 

조인 순서가 바뀌어도 조인 조건이 정확하면 SQL에서는 같은 결과를 출력합니다.

 

🎯 참고 팁

  • 조인의 순서는 바뀌어도 괜찮지만,
  • 조인 조건 (ON)이 정확한지 항상 체크해야 합니다.

-> 두 쿼리 모두 정확하지만,

**선생님 쿼리가 더 "표준적이고 명확한 구조"**라서

교육용이나 협업 시에는 더 추천되는 방식입니다.

 

🔍 두 쿼리 비교

✅ 선생님 쿼리 (더 추천되는 방식)

SELECT film.title, category.name
FROM film
JOIN film_category ON film.film_id = film_category.film_id
JOIN category ON film_category.category_id = category.category_id;

 

  • 주 테이블을 film으로 시작해서 "영화 → 카테고리" 방향으로 흐름이 자연스러움
  • 읽는 사람이 관계를 한눈에 파악하기 쉬움
  • SQL 스타일 가이드에서도 이런 방식 선호

😐 너의 쿼리

SELECT film.title, category.name 
FROM film_category
JOIN film ON film.film_id = film_category.film_id
JOIN category ON category.category_id = film_category.category_id;

 

 

  • 동작은 정확하게 같음
  • 다만 film_category가 주 테이블처럼 보이기 때문에 처음 보는 사람에게는 구조 파악이 덜 직관적임

 

✅ 결론: 선생님 쿼리가 더 교육적이고 가독성이 좋음

실행 결과는 똑같지만,

  • 코드 가독성
  • 의미 흐름
  • 교육적 목적

을 생각하면 선생님 쿼리가 더 좋은 스타일입니다.

 

🎯 질문 요지 요약

"SELECT에 film과 category가 있으니까, 이 둘을 연결해주는
 film_category를 FROM에 쓰는 게 맞는 거 아닌가요?"

 

🔍 핵심 개념: FROM에 무엇을 넣을지는 **"중심 주제(기준 테이블)"**에 따라 달라요.


✅ 일반적인 기준: "데이터의 주인"이 되는 테이블이 FROM

예시:

SELECT film.title, category.name
FROM film
JOIN film_category ...
  • 여기서는 "영화를 기준으로 각 영화가 어떤 카테고리에 속해 있는지" 보는 것이 목적이죠.
  • 즉, **film이 주인공(주 테이블)**이고 나머지는 연결용 또는 부가 정보입니다.
  • 그래서 FROM film이 자연스럽습니다.

✅ 반대로 이런 경우엔 film_category가 주가 될 수 있어요:

-- film_category를 기준으로 보고 싶은 경우
SELECT film.film_id, category.category_id
FROM film_category
JOIN film ON ...
JOIN category ON ...;
  • 예: **"총 몇 개의 영화-카테고리 조합이 있는지 세고 싶다"**면
  • 그때는 film_category가 중심 테이블이 됩니다.
  • 이럴 땐 FROM film_category도 완전히 타당해요.

💡 다시 말하면

 

🎓 결론

  • SELECT 절에 있는 테이블이 항상 FROM에 와야 하는 건 아닙니다.
  • **중심 개체(주제)**가 누구인지가 가장 중요합니다.
  • 당신의 논리도 맞습니다! 다만, 가독성과 의미 흐름을 위해 film부터 시작하는 것이 더 일반적입니다.

+ Recent posts