photos에 데이터 null 값을 추가하고 유저네임과 url을 함께 출력하는 것
데이터 추가
url과 username 출력 : 사용한 개념은 right join
(join & where)
1. 정답
접근 : 앞에서 contents & username, url & contents를 순서대로 가져왔으니 이걸 조인하면 되지 않을까 하는데서 접근
답안1
: 조인을 한 번만 썼다.
답안2
: 조인을 두 번 써야 한다.
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);
title
, author 의 name
, review 의 rating
을 반환하는 쿼리문을 작성해주세요. 단, book 의 author
가 review 를 작성한 author 와 같은 경우만 반환해주세요.내 풀이 : 앞에 4번에서 푼 것 활용. 사실상 거의 짝맞추기 수준으로 풀이함. 해설이 필요.
그래도 어떻게 맞췄는지?
마찬가지로 reviews에서 겹치는 부분을 찾음.
내 결과
-> 정답은 JK Rowling만 나와야 하는데 다 나옴. 뭔가 문제가 있다.
접근법을 달리했다.
authors-> reviews <- books
동기 분 팁 : select 절에 컬럼 대신 *을 넣고, 단계별로 조인을 할때 나오는 출력화면을 보시면 어느 부분에서 문제가 있는지 확인하기 더 쉬울거같아요. 실제 조인이 되야하는 컬럼들이 맞는지...
일종의 console.log, print같은 것.