✅ 문제
https://school.programmers.co.kr/learn/courses/30/lessons/62284
✅ 풀이
[나의 풀이] SubQuery - 인라인뷰 방식(from절에 서브쿼리 사용)
1. NAME이 yogurt인 것만 조회한 테이블(Y)을 만든다.
2. NAME이 milk인 것만 조회한 테이블(M)을 만든다.
3. 두 테이블 간에 card_id가 같은 것을 조건으로 조인한다.
4. 조인된 테이블에서 cart_id값 조회
=> 인라인뷰로 테이블을 두개를 따로 만들었는데, 하나의 서브쿼리로도 충분히 계산할 수 있기 때문에 비효율적인 코드라 생각됨.
select M.CART_ID from (SELECT * from CART_PRODUCTS where NAME = 'Yogurt') Y
join (SELECT * from CART_PRODUCTS where NAME = 'Milk') M on M.CART_ID = Y.CART_ID
order by M.CART_ID
[다른 사람 풀이] - where절에 서브쿼리 사용
where절에 하나의 서브쿼리를 사용하여 in연산자로 일치하는 cart_id 있는지 조회
# 1. SubQuery - where절에 서브쿼리 사용
select CART_ID from CART_PRODUCTS
where CART_ID in (select CART_ID from CART_PRODUCTS where NAME = 'Milk') AND NAME = 'Yogurt'
order by CART_ID
[다른 사람 풀이] - SELF JOIN
한 테이블을 다른 두 이름으로 별칭하여 연관지어 사용.
조건을 하나의 select문에서 한번에 처리함으로서 내 풀이의 비효율적인 인라인 뷰 방식을 개선시킬 수 있다.
# 2.SELF JOIN
select A.CART_ID from CART_PRODUCTS A, CART_PRODUCTS B
where A.CART_ID = B.CART_ID
and (A.NAME = 'Milk' and B.NAME = 'Yogurt')
order by A.CART_ID
다른 사람 풀이 : https://blue-boy.tistory.com/194
'DB > SQL' 카테고리의 다른 글
[SQL]프로그래머스 - 년, 월, 성별 별 상품 구매 회원 수 (0) | 2023.06.09 |
---|---|
[SQL]변수 (0) | 2023.05.31 |
[SQL] 데이터 형식, 형변환 (mysql) (0) | 2023.05.31 |
[SQL]프로그래머스 - 자동차 평균 대여 기간 구하기 (0) | 2023.05.31 |
[SQL] 행 입력, 수정, 삭제 CRUD (0) | 2023.05.30 |
✅ 문제
https://school.programmers.co.kr/learn/courses/30/lessons/62284
✅ 풀이
[나의 풀이] SubQuery - 인라인뷰 방식(from절에 서브쿼리 사용)
1. NAME이 yogurt인 것만 조회한 테이블(Y)을 만든다.
2. NAME이 milk인 것만 조회한 테이블(M)을 만든다.
3. 두 테이블 간에 card_id가 같은 것을 조건으로 조인한다.
4. 조인된 테이블에서 cart_id값 조회
=> 인라인뷰로 테이블을 두개를 따로 만들었는데, 하나의 서브쿼리로도 충분히 계산할 수 있기 때문에 비효율적인 코드라 생각됨.
select M.CART_ID from (SELECT * from CART_PRODUCTS where NAME = 'Yogurt') Y
join (SELECT * from CART_PRODUCTS where NAME = 'Milk') M on M.CART_ID = Y.CART_ID
order by M.CART_ID
[다른 사람 풀이] - where절에 서브쿼리 사용
where절에 하나의 서브쿼리를 사용하여 in연산자로 일치하는 cart_id 있는지 조회
# 1. SubQuery - where절에 서브쿼리 사용
select CART_ID from CART_PRODUCTS
where CART_ID in (select CART_ID from CART_PRODUCTS where NAME = 'Milk') AND NAME = 'Yogurt'
order by CART_ID
[다른 사람 풀이] - SELF JOIN
한 테이블을 다른 두 이름으로 별칭하여 연관지어 사용.
조건을 하나의 select문에서 한번에 처리함으로서 내 풀이의 비효율적인 인라인 뷰 방식을 개선시킬 수 있다.
# 2.SELF JOIN
select A.CART_ID from CART_PRODUCTS A, CART_PRODUCTS B
where A.CART_ID = B.CART_ID
and (A.NAME = 'Milk' and B.NAME = 'Yogurt')
order by A.CART_ID
다른 사람 풀이 : https://blue-boy.tistory.com/194
'DB > SQL' 카테고리의 다른 글
[SQL]프로그래머스 - 년, 월, 성별 별 상품 구매 회원 수 (0) | 2023.06.09 |
---|---|
[SQL]변수 (0) | 2023.05.31 |
[SQL] 데이터 형식, 형변환 (mysql) (0) | 2023.05.31 |
[SQL]프로그래머스 - 자동차 평균 대여 기간 구하기 (0) | 2023.05.31 |
[SQL] 행 입력, 수정, 삭제 CRUD (0) | 2023.05.30 |