OrdinadorsProgramació

Esquerra s'uneixen (SQL) - un exemple, la descripció detallada, l'ús de l'error

En qualsevol base de dades relacional real, tota la informació es distribueix en una taula separada. Moltes de les taules s'indiquen en l'esquema de comunicació entre si. No obstant això, amb l'ajuda de consultes SQL és molt possible posar un enllaç entre les dades, no integrats en el circuit. Això es fa mitjançant la realització d'una connexió d'unir-se, el que li permet construir una relació entre qualsevol nombre de taules, i fins i tot connectar informació aparentment dispars.

En aquest article parlarem específicament sobre l'externa esquerra. Abans de procedir a la descripció d'aquest tipus de connexió, afegiu en algunes taules de la base.

Preparació de les taules necessàries

Per exemple, a la nostra base de dades, no hi ha informació sobre les persones i els seus béns immobles. Resum basat en les tres taules: Pobles (persones), de béns immobles (béns arrels), Realty_peoples (relacions de la taula, les persones que a partir del que la propietat pertany a). Assumir les dades emmagatzemades en les taules de les persones:

pobles

identificació

L_name

f_nombre

Middle_name

aniversari

1

Ivanova

Daria

B.

07/16/2000

2

Pugin

Vladislav

Nikolaevich

01/29/1986

3

Evgenin

Alejandro

Federovich

04/30/1964

4

Annina

amor

P.

31.12.1989

5

Gerasimovsky

esperança

P.

03/14/1992

6

Gerasimovsky

Oleg

Albertovich

01/29/1985

7

Sukhanovskaya

jurat

A.

09/25/1976

8

Sukhanovskaya

Julia

Y.

2001.01.10

Béns immobles:

béns arrels

identificació

direcció

1

Arkhangelsk, ul. Voronin, d. 7, kv.6

2

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

3

regió d'Arkhangelsk, Severodvinsk, st. Lenin, d. 134, q. 85

4

regió d'Arkhangelsk, Novodvinsk, ul. Proletarshaya, d. 16, q. 137

5

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

- gent de relacions de propietat:

Realty_peoples

id_peoples

id_realty

tipus

7

3

copropietat total

8

3

copropietat total

3

5

propietat

7

1

propietat

5

4

parts comunes

6

4

parts comunes

L'esquerra unir-se a (SQL) - Descripció

compost de l'esquerra té la següent sintaxi:

TABLE_A LEFT JOIN table_B [{ON} predicat | {UTILITZAR spisok_ amb tolbtsov}]

I esquemàticament de la següent manera:

I aquesta expressió es tradueix com "Selecciona-ho tot, sense excepció, la línia de la Taula A i la Taula B per mostrar només les files coincidents del predicat. Si es va trobar la taula a la taula de cadenes per als parells A, a continuació, omplir les columnes resultants Null - valors ".

Molt sovint, quan la connexió de l'esquerra s'indica ON, utilitzant per a això únicament quan els noms de columna, que està previst per a realitzar la connexió són els mateixos.

Esquerra s'uneixen - exemples d'ús

Amb la connexió de l'esquerra es pot veure, tota la gent de la llista si hi ha propietat dels pobles. Per fer això en l'esquerra s'uneixen exemple de consulta SQL:

Pobles SELECT. *, Realty_peoples.id_realty, Realty_peoples.type

D'Pobles LEFT JOIN Realty_peoples A Peoples.id = Realty_peoples.id_peoples;

Amb els següents resultats:

consulta1

identificació

L_name

f_nombre

Middle_name

aniversari

id_realty

tipus

1

Ivanova

Daria

B.

07/16/2000

2

Pugin

Vladislav

Nikolaevich

01/29/1986

3

Evgenin

Alejandro

Federovich

04/30/1964

5

propietat

4

Annina

amor

P.

31.12.1989

5

Gerasimovsky

esperança

P.

03/14/1992

4

parts comunes

6

Gerasimovsky

Oleg

Albertovich

01/29/1985

4

parts comunes

7

Sukhanovskaya

jurat

A.

09/25/1976

1

propietat

7

Sukhanovskaya

jurat

A.

09/25/1976

3

copropietat total

8

Sukhanovskaya

Julia

Y.

2001.01.10

3

copropietat total

Com veiem, Ivanova Darya Pugin i Vladislav Anninoy Lyubovi No es registren els drets de béns arrels.

I el que hem rebut, utilitzant una combinació interna combinació interna? Com ja saben, que exclou files no coincidents, per la qual cosa tres de la nostra mostra final simplement es va deixar caure:

consulta1

identificació

L_name

f_nombre

Middle_name

aniversari

id_realty

tipus

3

Evgenin

Alejandro

Federovich

04/30/1964

5

propietat

5

Gerasimovsky

esperança

P.

03/14/1992

4

parts comunes

6

Gerasimovsky

Oleg

Albertovich

01/29/1985

4

parts comunes

7

Sukhanovskaya

jurat

A.

09/25/1976

1

propietat

7

Sukhanovskaya

jurat

A.

09/25/1976

3

copropietat total

8

Sukhanovskaya

Julia

Y.

2001.01.10

3

copropietat total

Semblaria que la segona versió també compleix amb les condicions del nostre problema. No obstant això, si comencem a col·locar en una altra, i una altra taula, tres persones del resultat ja irremeiablement anat. Per tant, en la pràctica, quan es combinen diverses taules molt més sovint s'utilitza la connexió esquerra i dreta de combinació interna.

Continuarà a mirar cap a l'esquerra unir-se a exemples de SQL. Adjuntar una taula amb les adreces de les nostres cases:

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

D'Pobles

LEFT JOIN Realty_peoples A Peoples.id = Realty_peoples.id_peoples

LEFT JOIN Realty A Realty.id = Realty_peoples.id_realty

Ara tenim no només una espècie de llei, sinó també la direcció de la propietat immobiliària:

consulta1

identificació

L_name

f_nombre

Middle_name

aniversari

id_realty

tipus

direcció

1

Ivanova

Daria

B.

07/16/2000

2

Pugin

Vladislav

Nikolaevich

01/29/1986

3

Evgenin

Alejandro

Federovich

04/30/1964

5

propietat

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

4

Annina

amor

P.

31.12.1989

5

Gerasimovsky

esperança

P.

03/14/1992

4

parts comunes

regió d'Arkhangelsk, Novodvinsk, ul. Proletarshaya, d. 16, q. 137

6

Gerasimovsky

Oleg

Albertovich

01/29/1985

4

parts comunes

regió d'Arkhangelsk, Novodvinsk, ul. Proletarshaya, d. 16, q. 137

7

Sukhanovskaya

jurat

A.

09/25/1976

3

copropietat total

regió d'Arkhangelsk, Severodvinsk, st. Lenin, d. 134, q. 85

7

Sukhanovskaya

jurat

A.

09/25/1976

1

propietat

Arkhangelsk, ul. Voronin, d. 7, kv.6

8

Sukhanovskaya

Julia

Y.

2001.01.10

3

copropietat total

regió d'Arkhangelsk, Severodvinsk, st. Lenin, d. 134, q. 85

Esquerra s'uneixen - l'ús típic d'error: taula de procediment no vàlid

errors bàsics realitzats a l'exterior per l'esquerra, dues taules:

  1. Seleccionat correctament l'ordre de les taules per a les que es perden les dades.
  2. Quan els errors quan s'utilitza una consulta amb unir taules.

Penseu primer error. Abans de la decisió de qualsevol problema s'ha d'entendre clarament que el que volem arribar al final. En aquest exemple anterior, prenem cadascuna de les persones, però va perdre del tot la informació sobre la propietat amb el número 2, el propietari no va ser trobada.

Si ens traslladem les taules en una consulta en alguns llocs, i començaríem amb «... De Realty va deixar unir-se als pobles ...» qualsevol propietat, no hauríem perdut, que no li dirà sobre les persones.

Però no tingui por de la connexió esquerra, canviar a plena externa, que s'inclou en els resultats i el joc, i no les línies que coincideixin.

Després de tot, el volum de mostra és sovint molt gran, i les dades extra és realment inútil. El més important - per esbrinar el que vol aconseguir un bon resultat: de totes les persones amb una llista dels seus béns disponibles o tota la llista de propietats amb els seus amos (si n'hi ha).

Esquerra s'uneixen - l'ús típic d'error: Sol·licitud és correcta en establir les condicions en el cas de

El segon error també s'associa amb la pèrdua de dades, i no sempre són evidents immediatament.

Tornem a la consulta quan ens vam ser rebuts a través de connexions de dades per a totes les persones i la seva propietat existent. Recordeu el següent amb esquerra unir-se a SQL d'exemple:

D'Pobles LEFT JOIN Realty_peoples A Peoples.id = Realty_peoples.id_peoples;

Suposem que volem aclarir la sol·licitud i no dóna sortida a les dades, en què el tipus de llei - "Propietat". Si ens limitem a afegir, utilitzant l'esquerra unir-se a SQL, un exemple de la següent condició:

...

On tipus <> "Propietat"

perdrem les dades sobre les persones que no tenen cap propietat, pel fet que el nul valor nul, no es compara la següent manera:

consulta1

identificació

L_name

f_nombre

Middle_name

aniversari

id_realty

tipus

5

Gerasimovsky

esperança

P.

03/14/1992

4

parts comunes

6

Gerasimovsky

Oleg

Albertovich

01/29/1985

4

parts comunes

7

Sukhanovskaya

jurat

A.

09/25/1976

3

copropietat total

8

Sukhanovskaya

Julia

Y.

2001.01.10

3

copropietat total

Per evitar que es produeixin errors per aquesta raó, el millor és establir la condició de selecció immediatament després de la connexió. Suggerim tenir en compte el següent amb l'esquerra unir-se exemple sql.

Pobles SELECT. *, Realty_peoples.id_realty, Realty_peoples.type

D'Pobles

LEFT JOIN Realty_peoples ON (Peoples.id = Realty_peoples.id_peoples I escrigui <> "Propietat")

El resultat serà el següent:

consulta1

identificació

L_name

f_nombre

Middle_name

aniversari

id_realty

tipus

1

Ivanova

Daria

B.

07/16/2000

2

Pugin

Vladislav

Nikolaevich

01/29/1986

3

Evgenin

Alejandro

Federovich

04/30/1964

4

Annina

amor

P.

31.12.1989

5

Gerasimovsky

esperança

P.

03/14/1992

4

parts comunes

6

Gerasimovsky

Oleg

Albertovich

01/29/1985

4

parts comunes

7

Sukhanovskaya

jurat

A.

09/25/1976

3

copropietat total

8

Sukhanovskaya

Julia

Y.

2001.01.10

3

copropietat total

Per tant, seguint la simple a l'esquerra unir-se a sql exemple, vam rebre una llista de totes les persones, movent-se més enllà, una d'aquestes propietats en una participació en el capital / conjunta.

Com a conclusió, m'agradaria destacar una vegada més que una mostra de qualsevol informació de la base de dades s'han de prendre amb responsabilitat. Molts matisos obert davant nostre amb l'esquerra s'uneixen exemple senzill sql, l'explicació dels quals un - abans de començar a escriure, fins i tot consulta bàsica, ha acuradament per comprendre el que volem arribar al final. Bona sort!

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

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