의외로 빨리 풀었다. 마지막에 강사님이 문제 풀이하실 때는 완전한 답을 가르쳐주신게 아니다. 일단 어떤식으로 문제 풀이를 진행했는지 설명하자면 하나하나 검색해가면서 뭐랑 뭐를 대조해야되는지 직접눈으로 따라가며 한단계식 밟아서 마지막에 결과값을 찾는 식이라고 해야될까? 나도 그런식으로 따로따로 테이블을 조회해가면서 천천히 INNER JOIN ON을 사용해서 결과값에 도달하게끔 하니까 속도는 느려도 눈이랑 머리가 따라가졌다.
DROP DATABASE IF EXISTS mall;
CREATE DATABASE mall;
USE mall;
CREATE TABLE t_order(
id INT(5) PRIMARY KEY AUTO_INCREMENT,
userNo INT(5) NOT NULL,
productNo INT(5) NOT NULL
);
CREATE TABLE t_user(
id INT(5) PRIMARY KEY AUTO_INCREMENT,
userId CHAR(200) NOT NULL,
userPw CHAR(200) NOT NULL,
userName CHAR(50) NOT NULL,
addr CHAR(200) NOT NULL
);
CREATE TABLE t_product(
id INT(5) PRIMARY KEY AUTO_INCREMENT,
pname CHAR(100) NOT NULL,
price INT(10) NOT NULL
);
INSERT INTO t_product
SET pname = '운동화',
price = 1000000;
INSERT INTO t_product
SET pname = '코트',
price = 100000;
INSERT INTO t_product
SET pname = '반바지',
price = 30000;
INSERT INTO t_product
SET pname = '스커트',
price = 15000;
INSERT INTO t_product
SET pname = '코트',
price = 100000;
INSERT INTO t_product
SET pname = '티셔츠',
price = 9000;
INSERT INTO t_product
SET pname = '운동화',
price = 200000;
INSERT INTO t_product
SET pname = '모자',
price = 30000;
INSERT INTO t_user
SET userId = 'user1',
userPw = 'pass1',
userName = '손흥민',
addr = '런던';
INSERT INTO t_user
SET userId = 'user2',
userPw = 'pass2',
userName = '설현',
addr = '서울';
INSERT INTO t_user
SET userId = 'user3',
userPw = 'pass3',
userName = '원빈',
addr = '대전';
INSERT INTO t_user
SET userId = 'user4',
userPw = 'pass4',
userName = '송혜교',
addr = '대구';
INSERT INTO t_user
SET userId = 'user5',
userPw = 'pass5',
userName = '소지섭',
addr = '부산';
INSERT INTO t_user
SET userId = 'user6',
userPw = 'pass6',
userName = '김지원',
addr = '울산';
INSERT INTO t_order
SET userNo = 1,
productNo = 1;
INSERT INTO t_order
SET userNo = 2,
productNo = 2;
INSERT INTO t_order
SET userNo = 3,
productNo = 3;
INSERT INTO t_order
SET userNo = 4,
productNo = 4;
INSERT INTO t_order
SET userNo = 5,
productNo = 5;
INSERT INTO t_order
SET userNo = 6,
productNo = 6;
INSERT INTO t_order
SET userNo = 6,
productNo = 7;
INSERT INTO t_order
SET userNo = 1,
productNo = 5;
INSERT INTO t_order
SET userNo = 4,
productNo = 4;
INSERT INTO t_order
SET userNo = 1,
productNo = 1;
INSERT INTO t_order
SET userNo = 5,
productNo = 8;
SELECT * FROM t_user;
SELECT * FROM t_order;
SELECT * FROM t_product;
# 1. 손흥민의 주문 개수는? ???
SELECT t_user.userName, COUNT(t_order.userNo) AS orderCount
FROM t_order
INNER JOIN t_user ON t_order.userNo = t_user.id
WHERE t_user.userName = '손흥민'
GROUP BY t_user.userName;
# 2. 손흥민이 산 상품은? ???
SELECT DISTINCT t_user.userName, t_order.productNo AS '상품넘버', t_product.pname AS '상품명'
FROM t_order
INNER JOIN t_user ON t_order.userNo = t_user.id
JOIN t_product ON t_order.productNo = t_product.id
WHERE t_user.userName = '손흥민';
SELECT*From t_user
WHERE userName = '손흥민';
SELECT * From t_order
WHERE id IN (1,5);
SELECT * FROM t_product
WHERE id IN (1,5);
-- SELECT pname FROM t_product
-- WHERE
# 3. 스커트를 산 사람은? ???
SELECT DISTINCT t_product.pname AS '상품명', t_user.userName AS '구매자이름'
FROM t_order
INNER JOIN t_product ON t_product.id = t_order.productNo
JOIN t_user ON t_user.id = t_order.userNo
WHERE t_product.pname = '스커트';
SELECT * FROM t_user;
SELECT * FROM t_order;
SELECT * FROM t_product;
# 4. 가장 많이 주문한 사람의 아이디와 이름, 주문개수는? ???
SELECT t_user.userName, t_user.userId, COUNT(t_order.productNo) AS `상품개수`
FROM t_order
INNER JOIN t_user ON t_order.userNo = t_user.id
GROUP BY t_user.id, t_order.userNo
ORDER BY `상품개수` DESC
LIMIT 1;
# 5. 소지섭이 사용한 총 금액은? ???
SELECT * FROM t_user;
SELECT * FROM t_order
WHERE userNo = 5;
SELECT * FROM t_product
WHERE id in (5, 8);
SELECT t_user.userName, SUM(t_product.price) AS 'allPrice'
FROM t_order
INNER JOIN t_user ON t_order.userNo = t_user.id
JOIN t_product ON t_product.id = t_order.productNo
WHERE t_user.userName = '소지섭'
GROUP BY t_user.id
ORDER BY 'allPrice';
따라간 흔적이 없는 정답은 처음부터 계속 부딫히면서 해결했던 코드고, 따라간 흔적이 있는 코드는 레슨 끝내고 카페와서 푸는 문제다.
spl에서 데이터에 어떤식으로 접근해서 어떻게 내가 원하는 결과값을 도출해내는지 몸으로 경험한 좋은 시간이였다.
'Coding History' 카테고리의 다른 글
2024. 07. 12 SQL 문제풀이 (0) | 2024.07.12 |
---|---|
국비 지원 IT(웹앱개발) 취업반 강의 26일차 (DB) (0) | 2024.07.11 |
국비 지원 IT(웹앱개발) 취업반 강의 25일차 (JDBC, DB) (0) | 2024.07.10 |
2024. 07. 09 JDBC Study (0) | 2024.07.09 |
국비 지원 IT(웹앱개발) 취업반 강의 24일차 (JDBC) (0) | 2024.07.09 |