DatoriProgrammēšana

Kreisais pievienoties (SQL) - piemērs, detalizētu aprakstu, izmantošanu kļūdu

Jebkurā reālajā relāciju datu bāzi, visa informācija tiek izplatīta atsevišķā tabulā. Daudzi no tabulas ir izklāstītas komunikācijas shēmā ar otru. Tomēr, ar palīdzību SQL vaicājumus tas ir pilnīgi iespējams ievietot saiti starp datiem, kas nav iestrādāta ķēdē. Tas tiek darīts, veicot pievienoties savienojumu, kas ļauj veidot attiecības starp jebkādu skaitu tabulas, un pat savienot šķietami nesavienojamu informāciju.

Šis raksts būs runāt konkrēti par kreiso ārējā pievienoties. Pirms aprakstam šāda veida savienojumu, pievienojiet dažas datu bāzes tabulām.

Sagatavošanās nepieciešamās tabulas

Piemēram, mūsu datu bāzē ir informācija par cilvēkiem un viņu nekustamo īpašumu. Kopsavilkums balstās uz trim galdiem: Peoples (personām), Realty (nekustamais īpašums), Realty_peoples (galda attiecības, cilvēki, kuri no tā, kas pieder īpašums). Pieņemsim šādus saglabāti tabulās tautas dati:

Peoples

id

L_name

F_name

Middle_name

dzimšanas diena

1

Ivanova

Daria

B.

2000/07/16

2

Pugin

Vladislav

Nikolaevich

1986/01/29

3

Evgenin

Alexander

Federovich

1964/04/30

4

Annina

mīlestība

P.

1989/12/31

5

Gerasimovsky

cerēt

P.

1992/03/14

6

Gerasimovsky

Oļegs

Albertovich

1985/01/29

7

Sukhanovskaya

žūrija

A.

1976/09/25

8

Sukhanovskaya

Julia

Y.

2001/01/10

Nekustamais īpašums:

nekustams īpašums

id

adrese

1

Arkhangelsk, ul. Voroņins, 7 d., Kv.6

2

Arkhangelsk, ul. Severodvinskaya, 84 d., Q. 9 BR. 5

3

Arkhangelsk apgabals, Severodvinska, st. Lenin, 134 d., Q. 85

4

Arkhangelsk apgabals, Novodvinsk, ul. Proletarshaya, 16 d., Q. 137

5

Arkhangelsk, pl. Terekhina, 89 d., Q. 13

Attiecību cilvēki - īpašumu:

Realty_peoples

id_peoples

id_realty

tips

7

3

Kopā kopīpašuma

8

3

Kopā kopīpašuma

3

5

īpašums

7

1

īpašums

5

4

Bieži daļas

6

4

Bieži daļas

Kreisais pievienoties (SQL) - Apraksts

Kreisais savienojums ir šādu sintaksi:

Table_A LEFT JOIN table_B [{ON plānotā} | {USING spisok_ ar tolbtsov}]

Un shematiski šādi:

Un šis izteiciens tiek tulkots kā "Atlasīt visu bez izņēmuma, līnija A tabulas un B tabulā, lai parādītu tikai atbilstošas rindas predikatīvajā. Ja tabula tika atrasts stīgu tabulā pāriem A, tad aizpildiet rezultātā kolonnas Null - vērtības ".

Visbiežāk, kad atstāja savienojums ir norādīts, izmantojot lieto tikai tad, ja kolonnu nosaukumiem, kas tiek plānots, lai izveidotu savienojumu, ir tas pats.

Kreisais pievienoties - piemērus lietošanas

Ar pieslēgumu no kreisās, mēs varam redzēt, visi cilvēki no saraksta, ja tur Peoples īpašums. Lai to izdarītu kreisi pievienoties sql vaicājumu piemērs:

SELECT Peoples. * Realty_peoples.id_realty, Realty_peoples.type

NO Peoples LEFT JOIN Realty_peoples ON Peoples.id = Realty_peoples.id_peoples;

Ar šādiem rezultātiem:

Query1

id

L_name

F_name

Middle_name

dzimšanas diena

id_realty

tips

1

Ivanova

Daria

B.

2000/07/16

2

Pugin

Vladislav

Nikolaevich

1986/01/29

3

Evgenin

Alexander

Federovich

1964/04/30

5

īpašums

4

Annina

mīlestība

P.

1989/12/31

5

Gerasimovsky

cerēt

P.

1992/03/14

4

Bieži daļas

6

Gerasimovsky

Oļegs

Albertovich

1985/01/29

4

Bieži daļas

7

Sukhanovskaya

žūrija

A.

1976/09/25

1

īpašums

7

Sukhanovskaya

žūrija

A.

1976/09/25

3

Kopā kopīpašuma

8

Sukhanovskaya

Julia

Y.

2001/01/10

3

Kopā kopīpašuma

Kā mēs redzam, Ivanova Darja Pugin Vladislavs un Anninoy Lyubovi Nav reģistrēta nekustamā īpašuma tiesības.

Un ko gan mēs esam saņēmuši, izmantojot iekšējo pievienoties Inner pievienoties? Kā jūs zināt, tas izslēdz neatbilstīgus rindas, tāpēc trīs no mūsu gala parauga būtu vienkārši samazinājies:

Query1

id

L_name

F_name

Middle_name

dzimšanas diena

id_realty

tips

3

Evgenin

Alexander

Federovich

1964/04/30

5

īpašums

5

Gerasimovsky

cerēt

P.

1992/03/14

4

Bieži daļas

6

Gerasimovsky

Oļegs

Albertovich

1985/01/29

4

Bieži daļas

7

Sukhanovskaya

žūrija

A.

1976/09/25

1

īpašums

7

Sukhanovskaya

žūrija

A.

1976/09/25

3

Kopā kopīpašuma

8

Sukhanovskaya

Julia

Y.

2001/01/10

3

Kopā kopīpašuma

Šķiet, ka otrais variants arī atbilst nosacījumiem mūsu problēmu. Tomēr, ja mēs sākam pievienot uz citu, un vēl galds, trīs cilvēki no rezultāta jau neatgriezeniski pagājis. Tādēļ praksē, kad apvienojot vairākas tabulas daudz biežāk izmanto kreiso un labo savienojums nekā Inner pievienoties.

Turpinās meklēt pa kreisi pievienoties SQL piemērus. Pievienojiet tabulu ar adresēm mūsu māju:

SELECT Peoples. * Realty_peoples.id_realty, Realty_peoples.type, Realty.address

NO tautu

LEFT JOIN Realty_peoples ON Peoples.id = Realty_peoples.id_peoples

LEFT JOIN Realty ON Realty.id = Realty_peoples.id_realty

Tagad mēs ne tikai veida likumu, bet arī adresi nekustamo īpašumu:

Query1

id

L_name

F_name

Middle_name

dzimšanas diena

id_realty

tips

adrese

1

Ivanova

Daria

B.

2000/07/16

2

Pugin

Vladislav

Nikolaevich

1986/01/29

3

Evgenin

Alexander

Federovich

1964/04/30

5

īpašums

Arkhangelsk, pl. Terekhina, 89 d., Q. 13

4

Annina

mīlestība

P.

1989/12/31

5

Gerasimovsky

cerēt

P.

1992/03/14

4

Bieži daļas

Arkhangelsk apgabals, Novodvinsk, ul. Proletarshaya, 16 d., Q. 137

6

Gerasimovsky

Oļegs

Albertovich

1985/01/29

4

Bieži daļas

Arkhangelsk apgabals, Novodvinsk, ul. Proletarshaya, 16 d., Q. 137

7

Sukhanovskaya

žūrija

A.

1976/09/25

3

Kopā kopīpašuma

Arkhangelsk apgabals, Severodvinska, st. Lenin, 134 d., Q. 85

7

Sukhanovskaya

žūrija

A.

1976/09/25

1

īpašums

Arkhangelsk, ul. Voroņins, 7 d., Kv.6

8

Sukhanovskaya

Julia

Y.

2001/01/10

3

Kopā kopīpašuma

Arkhangelsk apgabals, Severodvinska, st. Lenin, 134 d., Q. 85

Kreisais pievienoties - tipisku lietošanu kļūda: nederīga procedūras tabula

Pamata pieļautās kļūdas kreisajā ārējā pievienoties galdi, divi:

  1. Pareizi izvēlēta tabulas pasūtījumu, kuram dati tika zaudēts.
  2. Ja kļūdas, izmantojot vaicājumu ar pievienoties tabulas.

Apsveriet pirmā kļūda. Pirms lēmuma par jebkuru problēmu, būtu skaidri jāsaprot, ka tas, ko mēs vēlamies, lai beigās. Augstāk Šajā piemērā, mēs ņēmām katru vienu no cilvēkiem, bet pilnībā zaudēja informāciju par objektu ar numuru 2, kura īpašnieks netika atrasts.

Ja mēs pārcēlās tabulas ir vaicājums, dažās vietās, un tas sākas ar «... No Realty kreisās pievienoties tautu ...» jebkuru vienu īpašumu, mēs nebūtu zaudējuši, jums nebūs pastāstīt par cilvēkiem.

Bet nav jābaidās no kreisās savienojumu, pāriet uz pilnīgu ārējās, kas ir iekļauta rezultātus un saskaņošanas, un nevis saskaņošanas līnijas.

Galu galā, apjoms parauga bieži ir ļoti liels, un papildu dati ir faktiski bezjēdzīgi. Galvenais - lai noskaidrotu, ko jūs vēlaties, lai iegūtu rezultātu: visu cilvēku sarakstu ar to pieejamā īpašuma vai visa īpašuma sarakstu ar to īpašniekiem (ja tādi ir).

Kreisais pievienoties - tipisku lietošanu kļūda: pieprasījums ir pareizi nosakot nosacījumus WHERE

Otrā kļūda ir saistīta arī ar datu zudumu, un ne vienmēr ir uzreiz redzams.

Atgriezīsimies pie vaicājumu, kad mēs pa kreisi, izmantojot savienojumu saņemti dati par visiem cilvēkiem un viņu esošo īpašumu. Iegaumējiet ar kreiso pievienoties sql piemērs:

NO Peoples LEFT JOIN Realty_peoples ON Peoples.id = Realty_peoples.id_peoples;

Pieņemsim, ka mēs vēlamies, lai noskaidrotu pieprasījumu un nav izejas datus, kur likuma veids - "Īpašums". Ja mēs vienkārši pievienot, izmantojot pa kreisi pievienoties SQL, piemērs par šādu nosacījumu:

...

Ja tipa <> "Īpašums"

mēs zaudēsim datus par cilvēkiem, kuriem nav īpašumu, jo vērtība Null Null nav salīdzināma šādi:

Query1

id

L_name

F_name

Middle_name

dzimšanas diena

id_realty

tips

5

Gerasimovsky

cerēt

P.

1992/03/14

4

Bieži daļas

6

Gerasimovsky

Oļegs

Albertovich

1985/01/29

4

Bieži daļas

7

Sukhanovskaya

žūrija

A.

1976/09/25

3

Kopā kopīpašuma

8

Sukhanovskaya

Julia

Y.

2001/01/10

3

Kopā kopīpašuma

Lai nepieļautu kļūdas šī iemesla dēļ, tas ir labākais, lai nekavējoties atlases stāvokli uz savienojumu. Mēs iesakām izskatīt šādus ar kreiso pievienoties sql piemērs.

SELECT Peoples. * Realty_peoples.id_realty, Realty_peoples.type

NO tautu

LEFT JOIN Realty_peoples ON (Peoples.id = Realty_peoples.id_peoples un ierakstiet <> "Property")

Rezultāts būs šāds:

Query1

id

L_name

F_name

Middle_name

dzimšanas diena

id_realty

tips

1

Ivanova

Daria

B.

2000/07/16

2

Pugin

Vladislav

Nikolaevich

1986/01/29

3

Evgenin

Alexander

Federovich

1964/04/30

4

Annina

mīlestība

P.

1989/12/31

5

Gerasimovsky

cerēt

P.

1992/03/14

4

Bieži daļas

6

Gerasimovsky

Oļegs

Albertovich

1985/01/29

4

Bieži daļas

7

Sukhanovskaya

žūrija

A.

1976/09/25

3

Kopā kopīpašuma

8

Sukhanovskaya

Julia

Y.

2001/01/10

3

Kopā kopīpašuma

Tādējādi, sekojot vienkārši pa kreisi pievienoties SQL Piemēram, mēs saņēmām sarakstu ar visiem cilvēkiem, kas pārvietojas tālāk, viens no šiem īpašumiem ir kapitāla / kopīpašumā.

Kā Nobeigumā vēlos vēlreiz, ka izlase jebkādu informāciju no datubāzes jāveic atbildīgi uzsvērt. Daudzas nianses atvērti priekšā mums ar kreisās pievienoties SQL vienkāršu piemēru, tad skaidrojums no kuriem viens - pirms sākat rakstīt pat pamata vaicājumu, jums ir uzmanīgi, lai saprastu, ko mēs vēlamies, lai beigās. Veiksmi!

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

Copyright © 2018 lv.delachieve.com. Theme powered by WordPress.