CROSS JOIN(크로스 결합)을 통한 INNER JOIN의 생각

2986 단어 MySQLSQL
※이 기사는 실무 반년~1년을 향한 기사입니다.

SQL의 조인을 쓸 때, 꽤 생각대로의 결과를 얻을 수 없고 조인 조건에 고민하는 일이 있습니다.
다만, 어느 현장에서 크로스 결합을 사용하면 상당히 편해지는 것을 배웠으므로, 이번은 그 생각을 공유해 옵니다.

우선 이번에 사용하는 테이블은 다음과 같습니다.


이것을 단순히 교차 결합합니다. 크로스 결합은 총당으로 결합한다는 것입니다.
SELECT * FROM restaurant_name,restaurant_reputaion



이렇게 됩니다. 이것이라도 총당의 의미가 지금 붙잡을 수 없는 사람을 위해서 일부 취급하면, 이런 것입니다 (나는 처음 그랬습니다)



즉,
① 버리는 정이라는 일행에 대해 평판 테이블이 모두 붙어,
②총당을 위해 주는 테이가 평판 테이블의 행수분 증가하고 있다
라는 것입니다. 그리고는 같은 것을 왼쪽의 테이블(여기에서는 레스토랑 테이블)의 행수만큼 반복하고 있을 뿐입니다.

지금까지 교차 결합의 생각은 잡았을 것입니다.
그런 다음 교차 조인의 조건을 추가합니다.
SELECT * FROM restaurant_name,restaurant_reputaion 
WHERE restaurant_name.id = restaurant_reputaion.id

일본어로 하면 「레스토랑 테이블의 id와 평판 테이블의 id가 같은 것을 붙인다」라고 하는 곳입니까.
이것을 앞의 이미지를 사용하여 설명합니다.



우선 조금 전처럼 아키세이테이에 평판 테이블이 달라붙습니다.
이어서 where구를 보면, 「레스토랑 테이블의 id와 평판 테이블의 id가 같은 것을 붙이는 것」 때문에,
id=1 이외의 행은 붙지 않고 소멸합니다. 그리고는 레스토랑 테이블의 행 수분 이것을 반복해 갑니다.
그러면 결과는



됩니다.
이번에는 더 이상 결과를 붙이지 않지만 INNER JOIN을 사용하는 SQL 문
SELECT * FROM restaurant_name INNER JOIN restaurant_reputaion ON restaurant_name.id = restaurant_reputaion.id

와 같은 결과입니다.
INNER JOIN에서의 결합 조건이 생각되지 않을 때는, 우선 크로스 결합으로 결과를 표시하고 나서,
짜내면 알기 쉽다고 생각하므로 꼭 시도해보십시오.

좋은 웹페이지 즐겨찾기