21.5.4
PostgreSQL 따라해보기
1. 컬럼에 데이터 추가 및 모든 데이터 보기
photos에 데이터 null 값을 추가하고 유저네임과 url을 함께 출력하는 것
-
데이터 추가
-
url과 username 출력 : 사용한 개념은 right join
2. url과 댓글만 가져오기
(join & where)
1. 정답
- 내가 이해한 데이터 모델 :
- contents의 user_id와 photo의 user_id 연결
- contents의 photo_id와 photo의 pk 연결
3. url, contents, username 모두 가져오기
-
접근 : 앞에서 contents & username, url & contents를 순서대로 가져왔으니 이걸 조인하면 되지 않을까 하는데서 접근
-
답안1
: 조인을 한 번만 썼다.
-
답안2
: 조인을 두 번 써야 한다.
4. wrap-up
- Task 1. DB 구축
CREATE TABLE authors(
id SERIAL PRIMARY KEY,
name VARCHAR(50)
);
CREATE TABLE books (
id SERIAL PRIMARY KEY,
title VARCHAR(50),
author_id INTEGER REFERENCES books(id) ON DELETE CASCADE
);
CREATE TABLE reviews (
id SERIAL PRIMARY KEY,
rating INTEGER,
reviewer_id INTEGER,
book_id INTEGER REFERENCES books(id) ON DELETE CASCADE
);
INSERT INTO authors (name)
VALUES
('Stephen King'),
('Agatha Christie'),
('JK Rowling');
INSERT INTO books (title, author_id)
VALUES
('The Dark Tower', 1),
('Affair At Styles', 2),
('Chamber of Secrets', 3);
INSERT INTO reviews(rating, reviewer_id, book_id)
VALUES
(3, 1, 2),
(4, 2, 1),
(5, 3, 3);
- Task2 :
각 book 의title
, author 의name
, review 의rating
을 반환하는 쿼리문을 작성해주세요. 단, book 의author
가 review 를 작성한 author 와 같은 경우만 반환해주세요.
-
내 풀이 : 앞에 4번에서 푼 것 활용. 사실상 거의 짝맞추기 수준으로 풀이함. 해설이 필요.
-
그래도 어떻게 맞췄는지?
마찬가지로 reviews에서 겹치는 부분을 찾음.
-
내 결과
-> 정답은 JK Rowling만 나와야 하는데 다 나옴. 뭔가 문제가 있다.
접근법을 달리했다.
authors-> reviews <- books
동기 분 팁 : select 절에 컬럼 대신 *을 넣고, 단계별로 조인을 할때 나오는 출력화면을 보시면 어느 부분에서 문제가 있는지 확인하기 더 쉬울거같아요. 실제 조인이 되야하는 컬럼들이 맞는지...
일종의 console.log, print같은 것.
Author And Source
이 문제에 관하여(21.5.4), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@sinichy7/21.5.4PostgreSQL저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)