영화(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부터 시작하는 것이 더 일반적입니다.
'국비지원 - 실버마케팅(코딩) 250206~' 카테고리의 다른 글
| “복잡한 SQL은 이제 그만! VIEW로 가독성 높이기” (0) | 2025.05.16 |
|---|---|
| “UNION? JOIN? 뭘 붙이냐에 따라 다릅니다 – SQL 쿼리 꿀팁 정리” (0) | 2025.05.16 |
| "DB한테도 함수를 쓰라고요? 프로시저로 말하는 개발자 되기" (0) | 2025.05.16 |
| 📌 SQL CASE WHEN ELSE 완벽 정리: 초보도 중수도 알아야 할 팁! (0) | 2025.05.16 |
| 🌐 SQL JOIN 완전 기초 정리 — 공식 언어가 영어인 나라 찾기 예제로 배우기 (3) | 2025.05.16 |