이 문서는 지원되지 않는 버전의 PostgreSQL을위한 것입니다.
당신은에 대해 같은 페이지를 볼 수 있습니다57스포츠 토토 베트맨 꽁 머니14버전 또는 위에 나열된 다른 지원 버전 중 하나입니다.

2.6. 스포츠 토토 베트맨 사이의 결합

지금까지 쿼리는 한 번에 하나의 스포츠 토토 베트맨에만 액세스했습니다. 쿼리는 한 번에 여러 스포츠 토토 베트맨에 액세스하거나 스포츠 토토 베트맨의 여러 행이 동시에 처리되는 방식으로 동일한 스포츠 토토 베트맨에 액세스 할 수 있습니다. 한 번에 동일하거나 다른 스포츠 토토 베트맨의 여러 행에 액세스하는 쿼리를 A라고합니다.Join쿼리. 예를 들어, 모든 날씨 기록을 관련 도시의 위치와 함께 나열하고 싶다고 가정 해보십시오. 그렇게하려면를 비교해야합니다.City각 행의 열날씨스포츠 토토 베트맨이름도시스포츠 토토 베트맨을 하고이 값이 일치하는 행 쌍을 선택합니다.

note

이것은 개념적 모델 일뿐입니다. 결합은 일반적으로 가능한 각 행 쌍을 실제로 비교하는 것보다보다 효율적인 방식으로 수행되지만 사용자에게는 보이지 않습니다.

이것은 다음 쿼리에 의해 달성됩니다 :

선택 *
    날씨, 도시
    여기서 도시 = 이름;
도시 | temp_lo | temp_hi | prcp |    날짜 |     이름 | 위치
--------------+--------+---------+-------+----------------------------------------------------------------------
 샌프란시스코 |      46 |      50 | 0.25 | 1994-11-27 | 샌프란시스코 | (-194,53)
 샌프란시스코 |      43 |      57 |    0 | 1994-11-29 | 샌프란시스코 | (-194,53)
(2 줄)

결과 세트에 대해 두 가지를 관찰하십시오.

  • Hayward시에 대한 결과 행은 없습니다. 이것은에 일치하는 항목이 없기 때문입니다.도시Hayward의 스포츠 토토 베트맨이므로 결합은의 타의 추종을 불허하는 행을 무시합니다날씨스포츠 토토 베트맨. 우리는 이것이 어떻게 해결 될 수 있는지 곧 볼 것입니다.

  • 도시 이름을 포함하는 두 개의 열이 있습니다. 이것은의 열 목록이기 때문에 정확합니다.날씨and도시스포츠 토토 베트맨이 연결됩니다. 실제로 이것은 바람직하지 않기 때문에 사용하기보다는 출력 열을 명시 적으로 나열하고 싶을 것입니다.*:

    City, Temp_lo, Temp_hi, PRCP, 날짜, 위치를 선택하십시오
        날씨, 도시
        여기서 도시 = 이름;

운동 :이 쿼리의 의미론을 결정하려고 시도합니다여기서조항이 생략되었습니다.

열은 모두 다른 이름을 가지므로, 구식은 자신이 속한 스포츠 토토 베트맨을 자동으로 발견했습니다. 두 스포츠 토토 베트맨에 중복 열 이름이있는 경우Qualify당신이 의미하는 것을 보여줄 열 이름은 :

Weather.city, Weather.temp_lo, Weather.temp_hi, 선택
       Weather.prcp, weather.date, 도시
    날씨, 도시
    여기서 도시 .name = weather.city;

가입 쿼리의 모든 열 이름을 자격을 갖추는 것은 좋은 스타일로 간주되므로 중복 열 이름이 나중에 스포츠 토토 베트맨 중 하나에 추가되면 쿼리가 실패하지 않도록합니다..

지금까지 보이는 종류의 쿼리 가입 도이 대안 형식으로 작성할 수 있습니다.

선택 *
    날씨 내부에서 도시로 가입합니다 (weather.city = cities.name);

이 구문은 위의 것만 큼 일반적으로 사용되지는 않지만 다음 주제를 이해하는 데 도움이되도록 여기에 표시합니다..

이제 Hayward 레코드를 다시 얻을 수있는 방법을 알아낼 것입니다. 쿼리가 원하는 것은를 스캔하는 것입니다.날씨스포츠 토토 베트맨과 각 행마다 일치하는 것을 찾습니다도시행 (S). 일치하는 행이 발견되지 않으면 일부를 원합니다빈 값도시스포츠 토토 베트맨의 열. 이런 종류의 쿼리는입니다.외부 조인. (지금까지 본 조인은 내부 조인입니다.) 명령은 다음과 같습니다.

선택 *
    날씨에서 왼쪽 외부의 도시에 가입 (weather.city = cities.name);

     도시 | temp_lo | temp_hi | prcp |    날짜 |     이름 | 위치
--------------+--------+---------+-------+----------------------------------------------------------------------
 헤이워드 |      37 |      54 |      | 1994-11-29 |               |
 샌프란시스코 |      46 |      50 | 0.25 | 1994-11-27 | 샌프란시스코 | (-194,53)
 샌프란시스코 |      43 |      57 |    0 | 1994-11-29 | 샌프란시스코 | (-194,53)
(3 줄)

이 쿼리는 a라고합니다.왼쪽 외부 조인조인 연산자의 왼쪽에 언급 된 스포츠 토토 베트맨은 적어도 한 번은 출력에 각 행을 갖기 때문에 오른쪽의 스포츠 토토 베트맨은 왼쪽 스포츠 토토 베트맨의 일부 행과 일치하는 행 출력 만 갖습니다. 오른쪽 스포츠 토토 베트맨 일치가없는 왼쪽 스포츠 토토 베트맨 행을 출력 할 때 비어있는 (NULL) 값이 오른쪽 스포츠 토토 베트맨 열에 대체됩니다.

운동 :오른쪽 외부 조인 및 전체 외부 조인도 있습니다. 그 일이 무엇을하는지 알아보십시오.

우리는 또한 스포츠 토토 베트맨에 합류 할 수 있습니다. 이것을 A라고합니다.셀프 조인. 예를 들어, 다른 날씨 기록의 온도 범위에있는 모든 날씨 기록을 찾고 싶다고 가정 해 봅시다. 그래서 우리는를 비교해야합니다.temp_loandtemp_hi각각의 열날씨로드temp_loandtemp_hi기타 모든 열날씨행. 다음 쿼리 로이 작업을 수행 할 수 있습니다.

w1.city, w1.temp_lo As Low, W1.temp_hi As High, W1.temp_lo를 선택하십시오.
    w2.city, w2.temp_lo는 낮고, w2.temp_hi는 높다
    날씨 W1, 날씨 W2에서
    여기서 w1.temp_lo <w2.temp_lo
    및 w1.temp_hi w2.temp_hi;

     도시 | 낮음 | 높은 |     도시 | 낮음 | 높은
---------------+-----+-------+-----------------------------------
 샌프란시스코 |  43 |   57 | 샌프란시스코 |  46 |   50
 헤이워드 |  37 |   54 | 샌프란시스코 |  46 |   50
(2 줄)

여기서 우리는 날씨 스포츠 토토 베트맨을로 바 꾸었습니다.W1andW2가입의 왼쪽과 오른쪽을 구별 할 수 있습니다. 다른 쿼리에서 이러한 종류의 별명을 사용하여 일부 타이핑을 저장할 수도 있습니다 (예 :

선택 *
    날씨 W, 도시 c
    여기서 w.city = c.name;

당신은이 스타일의 약어를 자주 만날 것입니다.