컴퓨터, 프로그래밍
예를 들어, 상세한 설명, 오류의 사용 - 왼쪽 (SQL)에 가입
실제 관계형 데이터베이스에서 모든 정보는 별도의 테이블에 배포됩니다. 테이블의 대부분은 서로 통신 방식에 명시되어 있습니다. 의 도움으로하지만, SQL을 조회 그렇지 회로에 포함 된 데이터 사이의 링크를 넣어 매우 가능하다. 이 작업은 테이블의 수 사이의 관계를 구축, 심지어는 겉보기에 서로 다른 정보를 연결할 수있는 가입 연결을 수행하여 수행됩니다.
왼쪽 외부 조인에 대해이 문서 구체적으로 이야기합니다. 연결 유형에 대한 설명을 진행하기 전에, 일부 데이터베이스 테이블에 추가 할 수 있습니다.
필요한 테이블을 준비
예를 들어, 우리의 데이터베이스에, 사람과 자신의 부동산에 대한 정보가 있습니다. 인민 (국민), 부동산 (부동산), Realty_peoples (테이블 관계, 사람들이 무엇에서 속성이 속한) : 요약 세 개의 테이블을 기반으로. 사람들의 테이블에 저장된 다음 데이터를 가정합니다 :
사람들 | ||||
신분증 | L_name | F_name | Middle_name | 생일 |
(1) | 노바 | 다리아 |
B. | 2000년 7월 16일 |
이 | Pugin에 | 블라디슬라프 | Nikolaevich 기업 | 1986년 1월 29일 |
3 | Evgenin | 알렉산더 | Federovich | 1964년 4월 30일 |
4 | 애니아 | 사랑 | P. | 1989년 12월 31일 |
5 | Gerasimovsky | 기대 | P. | 1992년 3월 14일 |
6 | Gerasimovsky | 올렉 | Albertovich | 1985년 1월 29일 |
(7) | Sukhanovskaya | 배심 | A. | 1976년 9월 25일 |
8 | Sukhanovskaya | 줄리아 | Y. | 2001년 1월 10일 |
부동산 :
부동산 | |
신분증 | 주소 |
(1) | 아르 한 겔 스크, UL. 보로닌 D. 7 kv.6 |
이 | 아르 한 겔 스크, UL. Severodvinskaya, D. 84, Q. 9 BR. 5 |
3 | 아르 한 겔 스크 지역, 세베로드 빈 스크, 일. 레닌, D. 134, Q. (85) |
4 | 아르 한 겔 스크 지역, 노 보드 빈 스크, UL. Proletarshaya, D. 16, Q. 137 |
5 | 아르 한 겔 스크, PL. Terekhina, D. 89, Q. (13) |
관계 사람들 - 건물 :
Realty_peoples | ||
id_peoples | id_realty | 유형 |
(7) | 3 | 총 공동 소유 |
8 | 3 | 총 공동 소유 |
3 | 5 | 재산 |
(7) | (1) | 재산 |
5 | 4 | 공통 부품 |
6 | 4 | 공통 부품 |
조인 (SQL) 왼쪽 - 설명
왼쪽 화합물의 구문은 다음과 같습니다
| Table_A LEFT는 table_B [{ON 술어를} 가입 {tolbtsov spisok_으로 사용하기} |
그리고 다음과 개략적으로 :
이 표현은 "표 A 및 표 B의 라인 술어 만 매칭되는 열을 표시하기 위해, 예외없이 모든 선택으로 해석된다. 테이블이 쌍 A의 문자열 테이블에서 발견 된 경우, 널 (null) 결과 열을 채우기 - 값을 ".
왼쪽 연결에 표시되어있는 경우 연결을 할 예정입니다 열 이름이 동일 할 때 대부분의 경우에만 사용됩니다 사용하기.
왼쪽 가입 - 사용의 예를
왼쪽의 연결로 우리는 목록에서 모든 사람들 인민 재산이 경우 볼 수 있습니다. 왼쪽에서이 작업을 수행하려면 SQL 쿼리의 예에 가입 :
SELECT 민족. *, Realty_peoples.id_realty, Realty_peoples.type 인민 좌 가입 FROM Realty_peoples ON Peoples.id = Realty_peoples.id_peoples; |
다음과 같은 결과로 :
쿼리 1 | ||||||
신분증 | L_name | F_name | Middle_name | 생일 | id_realty | 유형 |
(1) | 노바 | 다리아 | B. | 2000년 7월 16일 | ||
이 | Pugin에 | 블라디슬라프 | Nikolaevich 기업 | 1986년 1월 29일 | ||
3 | Evgenin | 알렉산더 | Federovich | 1964년 4월 30일 | 5 | 재산 |
4 | 애니아 | 사랑 | P. | 1989년 12월 31일 | ||
5 | Gerasimovsky | 기대 | P. | 1992년 3월 14일 | 4 | 공통 부품 |
6 | Gerasimovsky | 올렉 | Albertovich | 1985년 1월 29일 | 4 | 공통 부품 |
(7) | Sukhanovskaya | 배심 | A. | 1976년 9월 25일 | (1) | 재산 |
(7) | Sukhanovskaya | 배심 | A. | 1976년 9월 25일 | 3 | 총 공동 소유 |
8 | Sukhanovskaya | 줄리아 | Y. | 2001년 1월 10일 | 3 | 총 공동 소유 |
우리가 볼 때, 노바 다리아 푸진 블라디슬라프 및 Anninoy Lyubovi 없음 부동산 권리를 등록하지 않습니다.
그리고 무엇 우리는 내부가 내부 조인 조인을 사용,받은 것? 아시다시피, 그것은 일치하지 않는 행을 제외, 그래서 우리의 최종 샘플 중 셋은 단순히 삭제 될 것입니다 :
쿼리 1 | ||||||
신분증 | L_name | F_name | Middle_name | 생일 | id_realty | 유형 |
3 | Evgenin | 알렉산더 | Federovich | 1964년 4월 30일 | 5 | 재산 |
5 | Gerasimovsky | 기대 | P. | 1992년 3월 14일 | 4 | 공통 부품 |
6 | Gerasimovsky | 올렉 | Albertovich | 1985년 1월 29일 | 4 | 공통 부품 |
(7) | Sukhanovskaya | 배심 | A. | 1976년 9월 25일 | (1) | 재산 |
(7) | Sukhanovskaya | 배심 | A. | 1976년 9월 25일 | 3 | 총 공동 소유 |
8 | Sukhanovskaya | 줄리아 | Y. | 2001년 1월 10일 | 3 | 총 공동 소유 |
두 번째 버전은 또한 우리의 문제의 조건을 충족하는 것으로 보인다. 그러나, 우리는 서로 연결하는 시작하면, 다른 테이블은 결과의 세 사람은 이미 돌이킬 수 없을 갔다. 내부보다는 여러 테이블을 결합 할 때 따라서, 실제로는 훨씬 더 자주 사용 왼쪽 및 오른쪽 연결 가입 할 수 있습니다.
SQL 예에 가입 왼쪽으로 보는 것입니다. 우리 집의 주소 테이블을 연결합니다 :
SELECT 민족. *, Realty_peoples.id_realty, Realty_peoples.type, Realty.address 인민 FROM 왼쪽은 Realty_peoples ON Peoples.id = Realty_peoples.id_peoples 가입 왼쪽은 Realty.id = Realty_peoples.id_realty ON 부동산 가입 |
이제 우리는 법의 종류뿐만 아니라 부동산의 주소뿐만 아니라 수 :
쿼리 1 | |||||||
신분증 | L_name | F_name | Middle_name | 생일 | id_realty | 유형 | 주소 |
(1) | 노바 | 다리아 | B. | 2000년 7월 16일 | |||
이 | Pugin에 | 블라디슬라프 | Nikolaevich 기업 | 1986년 1월 29일 | |||
3 | Evgenin | 알렉산더 | Federovich | 1964년 4월 30일 | 5 | 재산 | 아르 한 겔 스크, PL. Terekhina, D. 89, Q. (13) |
4 | 애니아 | 사랑 | P. | 1989년 12월 31일 | |||
5 | Gerasimovsky | 기대 | P. | 1992년 3월 14일 | 4 | 공통 부품 | 아르 한 겔 스크 지역, 노 보드 빈 스크, UL. Proletarshaya, D. 16, Q. 137 |
6 | Gerasimovsky | 올렉 | Albertovich | 1985년 1월 29일 | 4 | 공통 부품 | 아르 한 겔 스크 지역, 노 보드 빈 스크, UL. Proletarshaya, D. 16, Q. 137 |
(7) | Sukhanovskaya | 배심 | A. | 1976년 9월 25일 | 3 | 총 공동 소유 | 아르 한 겔 스크 지역, 세베로드 빈 스크, 일. 레닌, D. 134, Q. (85) |
(7) | Sukhanovskaya | 배심 | A. | 1976년 9월 25일 | (1) | 재산 | 아르 한 겔 스크, UL. 보로닌 D. 7 kv.6 |
8 | Sukhanovskaya | 줄리아 | Y. | 2001년 1월 10일 | 3 | 총 공동 소유 |
아르 한 겔 스크 지역, 세베로드 빈 스크, 일. 레닌, D. 134, Q. (85) |
왼쪽 가입 - 오류의 일반적인 사용을 : 잘못된 프로 시저 테이블을
왼쪽 외부에서 만든 기본 실수는 테이블이 조인
- 올바르게 데이터가 손실 된 테이블의 순서를 선택했습니다.
- 오류가있는 쿼리를 사용하면 어디 테이블을 조인.
첫 번째 실수를 생각해 보자. 문제의 결정 이전에 명확하게 우리가 결국 얻을 원하는 것으로 이해되어야한다. 위의 예에서, 우리는 사람들의 모든 하나 하나를했다,하지만 완전히 소유자를 찾을 수 없습니다 숫자 2, 아래에있는 개체에 대한 정보를 잃었다.
우리가 어떤 장소에서 쿼리에 테이블을 이동하고 시작하는 것«... 부동산은 ... 민족에 가입 왼쪽에서»어느 하나 개의 속성을 경우, 우리는 당신이 사람들에 대해 말하지 않을 것이다, 손실 않았을 것이다.
그러나, 왼쪽 연결 두려워 결과와 일치, 그리고 일치하는 라인에 포함되는 전체 외부로 전환되지 않습니다.
결국, 샘플의 부피는 종종 매우 큰이며, 추가 데이터는 실제로 쓸모가 없다. 중요한 것은 - 당신이 결과를 얻기 위해 원하는 것을 파악하는 모든 사람들의 가용 재산의 목록 또는 그들의 소유자와 전체 속성 목록 (있는 경우)와 함께.
왼쪽 가입 - 오류의 일반적인 사용을 다음 어디에서 조건을 설정할 때 요청이 올바른지
두 번째 오류는 데이터 손실과 관련된, 항상 즉시 명백하지된다.
연결이 모든 사람과 기존 속성에 대한 수신 된 데이터를 통해 우리가 떠날 때의 쿼리로 돌아가 보자. 왼쪽 SQL 예에 가입하여 다음 사항을 기억하십시오 :
인민 좌 가입 FROM Realty_peoples ON Peoples.id = Realty_peoples.id_peoples; |
우리가 요구를 명확히하려는 아니라 출력 데이터를 수행한다고 가정 어디 법의 유형 - "속성". 우리는 단순히 추가하는 경우, SQL, 다음과 같은 조건의 예에 가입 왼쪽 사용 :
...
어디 형 <> "속성" |
우리는 다음과 같이 널 (null) 값이 널 (null)이 비교되지 않기 때문에, 아무런 재산이없는 사람들의 데이터를 잃게됩니다 :
쿼리 1 | ||||||
신분증 | L_name | F_name | Middle_name | 생일 | id_realty | 유형 |
5 | Gerasimovsky | 기대 | P. | 1992년 3월 14일 | 4 | 공통 부품 |
6 | Gerasimovsky | 올렉 | Albertovich | 1985년 1월 29일 | 4 | 공통 부품 |
(7) | Sukhanovskaya | 배심 | A. | 1976년 9월 25일 | 3 | 총 공동 소유 |
8 | Sukhanovskaya | 줄리아 | Y. | 2001년 1월 10일 | 3 | 총 공동 소유 |
이런 이유로 발생하는 오류를 방지하기 위해, 연결시 바로 선택 조건을 설정하는 것이 가장 좋습니다. 우리는 SQL 예를 조인 왼쪽으로 다음 사항을 고려하는 것이 좋습니다.
SELECT 민족. *, Realty_peoples.id_realty, Realty_peoples.type 인민 FROM 좌 Realty_peoples ON 가입 (Peoples.id = Realty_peoples.id_peoples 입력 <> "속성") |
다음과 같이 결과가 될 것입니다 :
쿼리 1 | ||||||
신분증 | L_name | F_name | Middle_name | 생일 | id_realty | 유형 |
(1) | 노바 | 다리아 | B. | 2000년 7월 16일 | ||
이 | Pugin에 | 블라디슬라프 | Nikolaevich 기업 | 1986년 1월 29일 | ||
3 | Evgenin | 알렉산더 | Federovich | 1964년 4월 30일 | ||
4 | 애니아 | 사랑 | P. | 1989년 12월 31일 | ||
5 | Gerasimovsky | 기대 | P. | 1992년 3월 14일 | 4 | 공통 부품 |
6 | Gerasimovsky | 올렉 | Albertovich | 1985년 1월 29일 | 4 | 공통 부품 |
(7) | Sukhanovskaya | 배심 | A. | 1976년 9월 25일 | 3 | 총 공동 소유 |
8 | Sukhanovskaya | 줄리아 | Y. | 2001년 1월 10일 | 3 | 총 공동 소유 |
SQL 예에 가입 왼쪽으로 간단한에 따라 따라서, 우리는 더 이상 이동하지, 모든 사람들의 목록을 받아 지분 / 공동 소유의 이러한 속성 중 하나.
결론적으로 다시 한번 데이터베이스에서 정보의 샘플을 책임감있게 수행 할 필요가 있음을 강조하고 싶습니다. 왼쪽으로 우리 앞에 열려 많은 뉘앙스가 SQL 간단한 예에 가입, 설명하는 하나 - 당신도 기본 쿼리를 작성하기 전에, 당신은주의 깊게 우리가 결국 싶어 이해하기 위해해야합니다. 행운을 빌어 요!
Similar articles
Trending Now