SQL 조인

3197 단어 sqlbeginners

기본 SQL 조인





따라서 SQL에 테이블 사이에 관계가 있는 일부 테이블이 있고 한 테이블에서 다른 테이블의 조건을 기반으로 무언가를 반환하려고 합니다. 엄청난! JOIN
항상 그렇듯이 예를 보면서 이야기하는 것이 가장 좋다고 생각합니다. 저번에 hackerRank에서 찾은 문제와 가까운 문제를 빌릴 것입니다. 기본적으로 도시와 국가 테이블이 있습니다.

도시 테이블에는 국가 테이블의 코드 열과 일치하는 열 countryCode가 있습니다. 이것은 City 테이블에 있을 때 외래 키라고 하고 자체 테이블 국가에 있을 때 기본 키라고 합니다.

작업 : 'AFRICA'가 포함된/대륙의 모든 도시를 가져오는 쿼리를 작성하세요.



1단계: SELECT 문



따라서 이 두 테이블이 주어졌을 때 이전에 조인을 해본 적이 없다면 이 질문의 첫 번째 부분만 생각해 보셨으면 합니다.

모든 도시를 가져오는 쿼리를 작성하세요.



음, 이 첫 번째 부분은 테이블이 하나만 있는 경우와 동일합니다. 그러니 아직 다른 테이블에 대해 걱정하지 마세요. 첫 번째 부분만 작성하겠습니다.

SELECT city.name FROM city




2단계. JOIN 문



아무 것도 반환하지 않더라도 다른 테이블 Country를 참조해야 합니다. 우리의 WHERE는 그 안에 있는 col에 의존하기 때문에 액세스하려면 JOIN 열이 필요합니다.

JOIN country


완료.


3단계. 켜기
아직 완료되지 않았습니다... SQL은 매우 훌륭하지만 이들을 조인하는 방법을 설명해야 하므로 이 테이블 간에 일치하는 두 개의 키를 설명해야 합니다.

일치하는 두 열에 대해 등식 진술을 작성하십시오.



ON city.countryCode = country.code


4단계. 어디서



이제 국가 테이블을 조인했으므로 평소처럼 WHERE를 사용할 수 있습니다. 이 시점에서 나는 일반적으로 슈퍼 테이블을 만들었다고 상상합니다.

실제로는 아니지만 각 테이블의 모든 열에 액세스할 수 있습니다. 우리가 정말로 필요하지 않는 한 이 모든 추가 국가 데이터가 있는 각 도시 항목을 갖는 것은 정말 비효율적일 것입니다. 하지만 JOIN을 사용하면 지금처럼 행동할 수 있습니다. 우리는 아프리카 대륙 내의 해당 국가만을 기준으로 선택합니다.

도시는 여기에서도 자체 테이블이 될 수 있는 대륙과 직접 연결되어 있지 않지만 국가와 직접 연결되어 있으므로 WHERE contry.continent가 'Afr'과 같은지 쿼리할 수 있습니다.

WHERE country.continent = 'AFR'




그것이 퍼즐의 마지막 조각입니다! 따라서 SQL 쿼리의 전체 블록은 다음과 같습니다.

SELECT city.name FROM city
JOIN country
ON city.countryCode = country.code
WHERE country.continent = 'AFR'


좋습니다. 일대다 관계를 가진 두 개의 서로 다른 테이블 간의 견고한 기본 JOIN입니다. 몇 가지 기본 SQL JOIN 과제를 찾아 새로운 지식을 시험해 보십시오. 아무런 문제가 없다고 생각되면 JOIN TABLE을 사용해야 하는 다대다 관계에서 몇 가지 문제를 찾으십시오. 당신은 이것을 얻었다!

행복한 코딩,

제임스

좋은 웹페이지 즐겨찾기