스키마는 위와 같다. 이 3가지 테이블을 조합해서 아래와 같은 결과값을 얻는다.
posts 테이블과 users 테이블을 join 하고,
users 테이블과 likes 테이블을 join 하고,
likes 테이블과 users 테이블을 join 한다.
이때 다음과 같이 SQL 을 작성하면 오류가 발생한다.
SELECT posts.id, posts.content, users.name, users.name
FROM posts
JOIN users ON posts.user_id=users.id
JOIN likes ON posts.id=likes.post_id
JOIN users ON users.id=likes.user_id
WHERE posts.content LIKE "%무엇인가%"
AND users.name = "Rebekah";
users 테이블이 두 번 사용되어 오류가 발생했다. 이럴때는 트릭을 써야 한다. 아래와 같이 SQL 을 작성한다.
SELECT posts.id, posts.content, users.name, u2.name
FROM posts
JOIN users ON posts.user_id=users.id
JOIN likes ON posts.id=likes.post_id
JOIN users u2 ON u2.id=likes.user_id
WHERE posts.content LIKE "%무엇인가%"
AND u2.name = "Rebekah";
3번째 join 의 users 를 u2 로 alias 를 사용했다. 이렇게 할 경우 error 1066 이 발생하지 않는다. users 테이블의 name 을 두번 사용할 수 있게됐다.