image

2개의 독립된 테이블을 JOIN을 통해서 하나의 테이블 형태로 보는 방법에 대해 알아보자.

  1. 결합고리(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;
    image

  2. 이제 author_id 칼럼과 id칼럼을 제외하고 특정칼럼들만 가져와서 안보이게 하자.
    - 2개의 테이블 모두 같은명의 id칼럼을 가지고 있으므로, ambiguous라는 에러가 뜬다.
  3. 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

    image
    이럴때는 칼럼명앞에 table명.칼럼명을 적어주면 된다.

    mysql> SELECT topic.id, title, description, created, name, profile FROM topic LEFT JOIN author ON topic.author_id = author.id;
    image

  4. 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;
    image

기존의 테이블에서 중복을 제거했다는 것은 매우 중요한 일이다. -> 하나만 바꿔주면 전체가 바뀐다.
image

image


topic테이블은 글에 대한 내용이라면, comment 테이블이 존재할 수 있다. 여기에서도 author와 profile이 필요할 것이다.
comment 테이블에 author_id칼럼을 만들고 역시 author 테이블에서 가져오면 될 것이다.
image

image

+ Recent posts