W każdej prawdziwej relacyjnej bazie danych wszystkie informacje są rozpowszechniane w oddzielnych tabelach. Wiele tabel ma ze sobą stałe połączenia ze schematem. Jednak przy pomocy zapytań sql możliwe jest łączenie danych, które nie są zawarte w schemacie. Osiąga się to poprzez ukończenie operacji connect connect, która pozwala budować relacje między dowolną liczbą tabel i łączyć nawet pozornie rozproszone dane. W tym artykule omówimy konkretnie lewe połączenie zewnętrzne. Przed kontynuowaniem opisu tego typu połączenia dodamy kilka tabel do bazy danych.
Przygotowanie wymaganych tabel
Ludy
id
(15 ) L_name
F_name
Middle_name
Urodziny
Borisovna
1
Iwanowa
Darina 46
16072000
2
Pudin
Vladislav
(61 )
Nikołajewicz
29011986
3
Eugeniusz
Alexander
Fedorovich
30041964
4
Annina
(98 )
Miłość
Pawlivna
, 31121989
5
Herasymovskaya
nadzieja
P.
, 14031992
6
,
Gerasimovka
Oleg
Albertovich
, 29011985
, 7
Suhanovskyy
, George
A.
(166 )
25091976
8
Suhanovskaya
Julia
,
Yu
01102001
nieruchomości
nieruchomości
(193 )
wartość identyfikatora
adresu
1
, str. Archangielsk ul. Voronina, 7 kv. 6
2
d. Archangielsk ul. Siewierodwińsk, 84 m kw. M. 9 pokoi 5
3
, obszar Archangielsk g. Siewierodwińsk, ul. Lenin, 134 kw. M. 85
4
obszar Archangielsk, str. Novodvynsk ul. Proletarskaya, 16 mkw. 137
5
d. Archangielsk pl. Teriokhin, 89 m². 13
U osób relations - nieruchomości:
Realty_peoples
id_peoples
id_realty
typu
, 7
3
współwłasność Całkowita
8
3
wspólną własnością Razem
3
5
obiektu
, 7
1
nieruchomości
5
4
(314 )
własności zwykłą
6
4
własności zwykłą
lewej przyłączenia (SQL) - Opis [331 ]
Lewa związek ma następującą składnię:
table_a lewe sprzężenie table_b [{O predykatu} | {UŻYWAJĄC list_stolbs}]
Wygląda to tak schematycznie:
I to wyrażenie jest tłumaczone jako „Zaznacz wszystko, bez wyjątku, wiersz tabeli, a tabela przynieść tylko predykat pasujący na linii. Jeśli tabela nie znajdzie pary dla wierszy w Tabeli A, wypełnij wynikowe wartości kolumny Null. "
Często podczas wykonywania lewy połączenia wskazuje na wykorzystaniu stosowane tylko wtedy, gdy nazwy kolumn, które planowane podłączenie zbieżne.
LEFT JOIN - przykłady
SELECT Peoples * Realty_peoples.id_realty, Realty_peoples.type Z Peoples lewo Dołącz Realty_peoples NA Peoples.id = Realty_peoples.id_peoples;.
i otrzymuje się następujące wyniki:
Zapros1
wartość identyfikatora
L_name
,
F_name
Middle_name
urodzin
id_realty
typu
1
Ivanova
Darya (391 )
)
2
Pugin
Władysław
M.
, 29011986
3
Evga Dziewięć
Alexander
F
, 30041964
5
nieruchomości
4
Annino
Love
(477 )
P.
, 31121989
(493 )
5
Herasymovskaya
nadzieja
P.
,
, 14031992
,
4
własności zwykłą
6 (523 )
Gerasimovka
Oleg
Albertovich
(537 )
29011985
,
4
własności zwykłą
, 7
Suhanovskyy
, George
A.
, 25091976 (567 )
1
obiektu
, 7
Suhanovskyy
George
A.
25091976
(598 ) 3
Całkowita własność wspólną
8
Suhanovskaya
Julia
, Yu
, 01102001
,
3
wspólną własnością Razem
Jak widać w Iwanow-darii, Puhyna Vladislav Annino i miłość Brak zarejestrowanych praw własności. Co używaliśmy interkonekt Wewnętrzna przyłączyć? Jak wiecie, wyklucza odrębne linii, trzy osoby z naszej próbki końcowej po prostu padł:
Zapros1
wartość id
L_name
F_name
666) 3
Evhenyn
Alexander
F
(681 )
30041964
5
nieruchomości
5
Herasymovskaya
nadzieja
P.
, 14031992
,
,
4
własności zwykłą
6
Gerasimovka
Oleg
Albertovich
, 29011985 (7 39)
4
własność wspólna akcja
7
25091976
)
1
nieruchomości
7
Suhanovskyy
, George
A.
, 25091976
3
,
, wspólną własnością Łącznie
8
Suhanovskaya
Julia
Yu
, 01102001
3
wspólną własnością Razem
Wydaje się, że druga opcja po prostu spotkać nasz problem. Jeśli jednak będziemy kontynuować dodawanie kolejnej tabeli, trzy z wyników będą bezpowrotnie znikały. Dlatego w praktyce, przy łączeniu wielu tabel, związki lewy i prawy są znacznie częściej używane niż połączenia wewnętrzne.
Kontynuuj przeglądanie przykładów z lewego sprzężenia sql. Dołącz tabelę z adresami naszych obiektówNieruchomość.
Wybierz Peoples * Realty_peoples.id_realty, Realty_peoples.type, Realty.address OD Peoples LEFT JOIN Realty_peoples NA Peoples.id = Realty_peoples.id_peoples LEFT JOIN Realty NA Realty.id = Realty_peoples.id_realty (836 )
teraz mamy nie tylko prawo rodzaju, ale dotyczy również właściwości:
Zapros1
wartość id
L_name
F_name
Middle_name
Urodziny
(862 )
id_realty
typu
adresu
1
,
Ivanova
Darya
, B
, 16072000
, (894 )
2
Pugin
Władysław
N.
, 29011986
3
(942 )
Evhenyn
Alexander
F
, 30041964
,
5
obiektu
d. Archangielsk pl. Teriokhin, 89 m². 13
4
Annino
Love
P.
, 31121989
, 5
,
,
,
Herasymovskaya (1.008) (1.009) (1.010) (1.011) nadzieja
, P.
14031992
, 4
własności zwykłą (1.028) (1.029 )
, obszar Archangielsk, str. Novodvynsk ul. Proletarskaya, 16 mkw. 137
, 6
Gerasimovka
Oleg
Albertovich
29011985
4
własność wspólna akcja
Archangielsk region, miasto Nowodvinsk, ul. Proletarskaya, 16 mkw. 137
, 7
Suhanovskyy (1.072) (1.073) (1.074) (1.075), George (1.076) (1.077) (1.078)
, A.
25091976
3 (1.088) (1.089) (1.090) (1.091) Całkowita współwłasność
, obszar Archangielsk g. Siewierodwińsk, ul. Lenin, 134 kw. M. 85
, 7
Suhanovskyy (1.104) (1.105) (1.106) (1.107), George (1.108) (1.109) (1.110)
, A.
25091976
, 1
obiektu (1.124) (1.125) (1.126 )
Archangielsk, ul. Voronina, 7 kv. 6
, 8
Suhanovskaya (1.136) (1.137) (1.138) (1.139) Julia (1.140) (1.141) (1.142)
, Y.
,
01102001
3 (1.152) (1.153) (1.154) (1.155) współwłasność całkowita
, obszar Archangielsk g. Siewierodwińsk, ul. Lenin, 134 kw. M. 85
, z lewej przyłączenia - stosować typowe błędy: nieprawidłowe procedury tabeli
Jeśli przenieśliśmy tabele w miejscach zapytań i ruszy z nieruchomości «Od lewej przyłączyć Peoples» nie jest właściwością nie straciłaby nie można powiedzieć o ludziach.
, z lewej przyłączenia - zastosowanie typowe błędy poprawnego zapytania przy ustalaniu warunków Oznaczanie
OD Peoples lewo Dołącz Realty_peoples NA Peoples.id = Realty_peoples.id_peoples;
Załóżmy, że chcemy wyjaśnić zapytanie i nie wyświetlać danych, gdzie typem prawa jest "Właściwość". Jeśli po prostu dodamy, używając lewego sprzężenia sql, następujący warunek:
Gdzie typ & gt; "Własność"
może nastąpić utrata danych na temat ludzi, którzy nie mają właściwość, ponieważ pusta Null nie jest porównywana w następujący sposób:
Zapros1
wartość id (1.183) (1.184) (1.185) (1.186) L_name (1.187) (1.188) (1.189) (1.190) F_name (1.191) (1.192) (1.193) (1.194) Middle_name (1.195) (1.196) (1.197) (1.198 )
Gerasimovskaya
nadzieja
, P.
14031992
, 4
własność wspólna akcja
6
Gerasimovka
Oleg
Albertovich
29011985
, 4
wspólne akcji Budynek
, 7
Suhanovskyy
, George (1.275) (1.276) (1.277)
, A.
25091976
3 (1.287) (1.288) (1.289) (1.290) Całkowita współwłasność
(1 294), 8
Suhanovskaya
, Julia
, Y.
(1309 )
01102001
3
współwłasność Razem
aby zapobiec błędom tego powodu, to najlepiej zapytać warunek selekcji natychmiast po połączeniu. Proponujemy rozważyć następujące kwestie z lewego przykładu dołączenia do sql.
SELECT Peoples * Realty_peoples.id_realty, Realty_peoples.type Z Peoples lewo Dołącz Realty_peoples ON (Peoples.id = Realty_peoples.id_peoples typu I i lt; & gt, "Właściciel").
Wynik będzie w sposób następujący:
Zapros1
wartość identyfikatora
L_name
F_name (1339 ) (1.340) (1.341) (1.342) Middle_name (1.343) (1.344) (1.345) (1.346) Data
id_realty (1.351) (1.352) (1.353) (1.354) typ
, 1
Iwanow (1.363) (1.364) (1.365) (1.366) Darin (1.367) (1.368) (1.369) (1.370 ), B.
16072000
(1.376) (1.377) (1.378) (1.379) (1.380) (1.381) (1.382) (1.383) (1.384) (1.385) (1.386 ) 2 (1.387) (1.388) (1.389) (1.390) Pugin
Władysław
, N.
29011986
,
Eugeniusz
Alexander
, F.
30041964
(1.432) (1.433) (1.434) (1.435) (1.436 )
, 4
Annino
Love
, P.
31121989
(1.460) (1.461) (1.462) (1.463) (1.464) (1.465) (1.466) (1.467)
, 5
Herasymovskaya (1.475) (1.476) (1.477) (1.478) nadzieja
, P. (1483 )
14031992
, 4
, ich udział wspólny Czas odtwarzania
, 6
Gerasimovka (1.503) (1.504) (1.505) (1.506) Oleg (1.507) (1.508) (1.509)
Albertovich
29011985
, 4
własności zwykłą
, 7
Suhanovskyy (1.531) (1.532) (1.533) (1.534), George
, A.
25091976
3 (1.547) (1.548) (1.549) (1.550) Całkowita współwłasność
, 8 (1.555) (1.556) (1.557) (1.558) Suhanovskaya
Julia
, Y.
(1570 ) 01102001
(15 74) 3
współwłasność Razem
W ten sposób, wykonując proste z lewej przyłączyć sql przykład mamy listę wszystkich ludzi, poruszając ponadto w niektórych z nich nieruchomości w własność częściowa /wspólna.