CROSS JOIN(크로스 결합)을 통한 INNER JOIN의 생각
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에서의 결합 조건이 생각되지 않을 때는, 우선 크로스 결합으로 결과를 표시하고 나서,
짜내면 알기 쉽다고 생각하므로 꼭 시도해보십시오.
Reference
이 문제에 관하여(CROSS JOIN(크로스 결합)을 통한 INNER JOIN의 생각), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/hayato787/items/b5b64cb8013c09d386b1텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)