7. JOIN을 통해 분리된 테이블을, 하나의 테이블형태로 보기
2019. 1. 5. 16:58
2개의 독립된 테이블을 JOIN을 통해서 하나의 테이블 형태로 보는 방법에 대해 알아보자.
- 결합고리(joint)는 topic테이블의 author_id와 author테이블의 id이므로
명령문은 'topic 테이블의 모든 데이터를 출력하는데, author_id의 값과 author테이블의 id값이 같은 것 author테이블의 값을 붙혀'이다.
mysql> SELECT * FROM topic LEFT JOIN author ON topic.author_id = author.id; - 이제 author_id 칼럼과 id칼럼을 제외하고 특정칼럼들만 가져와서 안보이게 하자.
- 2개의 테이블 모두 같은명의 id칼럼을 가지고 있으므로, ambiguous라는 에러가 뜬다. - topic 테이블의 id칼럼명을 다른 것으로 변경시켜 보여줄 수 도 있다.
mysql> SELECT topic.id AS topic_id, title, description, created, name, profile FROM topic LEFT JOIN author ON topic.author_id = author.id;
mysql> SELECT id, title, description, created, name, profile FROM topic LEFT JOIN author ON topic.author_id = author.id;
ERROR 1052 (23000): Column 'id' in field list is ambiguous
이럴때는 칼럼명앞에 table명.칼럼명을 적어주면 된다.
mysql> SELECT topic.id, title, description, created, name, profile FROM topic LEFT JOIN author ON topic.author_id = author.id;
기존의 테이블에서 중복을 제거했다는 것은 매우 중요한 일이다. -> 하나만 바꿔주면 전체가 바뀐다.
topic테이블은 글에 대한 내용이라면, comment 테이블이 존재할 수 있다. 여기에서도 author와 profile이 필요할 것이다.
comment 테이블에 author_id칼럼을 만들고 역시 author 테이블에서 가져오면 될 것이다.