335 Shares 7286 views

Izquierda se unen (SQL) – un ejemplo, la descripción detallada, el uso del error

En cualquier base de datos relacional real, toda la información se distribuye en una mesa separada. Muchas de las tablas se indican en el esquema de comunicación entre sí. Sin embargo, con la ayuda de consultas SQL es muy posible poner un enlace entre los datos, no integrados en el circuito. Esto se hace mediante la realización de una conexión de unirse, lo que le permite construir una relación entre cualquier número de tablas, e incluso conectar información aparentemente dispares.

En este artículo hablaremos específicamente sobre la externa izquierda. Antes de proceder a la descripción de este tipo de conexión, agregue en algunas tablas de la base.

Preparación de las tablas necesarias

Por ejemplo, en nuestra base de datos, no hay información acerca de las personas y sus bienes inmuebles. Resumen basado en las tres tablas: Pueblos (personas), de bienes inmuebles (bienes raíces), Realty_peoples (relaciones de la tabla, las personas que a partir de lo que la propiedad pertenece a). Asumir los siguientes datos almacenados en las tablas de las personas:

pueblos

identificación

L_name

f_nombre

Middle_name

cumpleaños

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

esperanza

P.

03/14/1992

6

Gerasimovsky

Oleg

Albertovich

01/29/1985

7

Sukhanovskaya

jurado

A.

09/25/1976

8

Sukhanovskaya

Julia

Y.

01.10.2001

Bienes inmuebles:

bienes raíces

identificación

dirección

1

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

2

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

3

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

4

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

5

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

– gente de relaciones de propiedad:

Realty_peoples

id_peoples

id_realty

tipo

7

3

copropiedad total

8

3

copropiedad total

3

5

propiedad

7

1

propiedad

5

4

partes comunes

6

4

partes comunes

La izquierda unirse a (SQL) – Descripción

compuesto de la izquierda tiene la siguiente sintaxis:

TABLE_A LEFT JOIN table_B [{ON} predicado | {USAR spisok_ con tolbtsov}]

Y esquemáticamente de la siguiente manera:

Y esta expresión se traduce como "Seleccionar todo, sin excepción, la línea de la Tabla A y la Tabla B para mostrar sólo las filas coincidentes del predicado. Si se encontró la tabla en la tabla de cadenas para los pares A, a continuación, llenar las columnas resultantes Null – valores".

Muy a menudo, cuando la conexión de la izquierda se indica ON, utilizando para ello únicamente cuando los nombres de columna, que está previsto para realizar la conexión son los mismos.

Izquierda se unen – ejemplos de uso

Con la conexión de la izquierda se puede ver, toda la gente de la lista si hay propiedad de los pueblos. Para hacer esto en la izquierda se unen ejemplo de consulta SQL:

Pueblos SELECT. *, Realty_peoples.id_realty, Realty_peoples.type

DE Pueblos LEFT JOIN Realty_peoples EN Peoples.id = Realty_peoples.id_peoples;

Con los siguientes resultados:

consulta1

identificación

L_name

f_nombre

Middle_name

cumpleaños

id_realty

tipo

1

Ivanova

Daria

B.

07/16/2000

2

Pugin

Vladislav

Nikolaevich

01/29/1986

3

Evgenin

Alejandro

Federovich

04/30/1964

5

propiedad

4

annina

amor

P.

31.12.1989

5

Gerasimovsky

esperanza

P.

03/14/1992

4

partes comunes

6

Gerasimovsky

Oleg

Albertovich

01/29/1985

4

partes comunes

7

Sukhanovskaya

jurado

A.

09/25/1976

1

propiedad

7

Sukhanovskaya

jurado

A.

09/25/1976

3

copropiedad total

8

Sukhanovskaya

Julia

Y.

01.10.2001

3

copropiedad total

Como vemos, Ivanova Darya Pugin y Vladislav Anninoy Lyubovi No se registran los derechos de bienes raíces.

Y lo que hemos recibido, utilizando una combinación interna combinación interna? Como ya saben, que excluye filas no coincidentes, por lo que tres de nuestra muestra final simplemente se dejó caer:

consulta1

identificación

L_name

f_nombre

Middle_name

cumpleaños

id_realty

tipo

3

Evgenin

Alejandro

Federovich

04/30/1964

5

propiedad

5

Gerasimovsky

esperanza

P.

03/14/1992

4

partes comunes

6

Gerasimovsky

Oleg

Albertovich

01/29/1985

4

partes comunes

7

Sukhanovskaya

jurado

A.

09/25/1976

1

propiedad

7

Sukhanovskaya

jurado

A.

09/25/1976

3

copropiedad total

8

Sukhanovskaya

Julia

Y.

01.10.2001

3

copropiedad total

Parecería que la segunda versión también cumple con las condiciones de nuestro problema. Sin embargo, si comenzamos a colocar en otra, y otra mesa, tres personas del resultado ya irremediablemente ido. Por lo tanto, en la práctica, cuando se combinan varias tablas mucho más a menudo se utiliza la conexión izquierda y derecha de combinación interna.

Continuará a mirar hacia la izquierda unirse a ejemplos de SQL. Adjuntar una tabla con las direcciones de nuestras casas:

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

DE Pueblos

LEFT JOIN Realty_peoples EN Peoples.id = Realty_peoples.id_peoples

LEFT JOIN Realty EN Realty.id = Realty_peoples.id_realty

Ahora tenemos no sólo una especie de ley, sino también la dirección de la propiedad inmobiliaria:

consulta1

identificación

L_name

f_nombre

Middle_name

cumpleaños

id_realty

tipo

dirección

1

Ivanova

Daria

B.

07/16/2000

2

Pugin

Vladislav

Nikolaevich

01/29/1986

3

Evgenin

Alejandro

Federovich

04/30/1964

5

propiedad

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

4

annina

amor

P.

31.12.1989

5

Gerasimovsky

esperanza

P.

03/14/1992

4

partes comunes

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

6

Gerasimovsky

Oleg

Albertovich

01/29/1985

4

partes comunes

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

7

Sukhanovskaya

jurado

A.

09/25/1976

3

copropiedad total

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

7

Sukhanovskaya

jurado

A.

09/25/1976

1

propiedad

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

8

Sukhanovskaya

Julia

Y.

01.10.2001

3

copropiedad total

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

Izquierda se unen – el uso típico de error: mesa de procedimiento no válido

errores básicos realizados en el exterior por la izquierda, dos tablas:

  1. Seleccionado correctamente el orden de las tablas para las que se pierden los datos.
  2. Cuando los errores cuando se utiliza una consulta con unir tablas.

Considere primer error. Antes de la decisión de cualquier problema debe entenderse claramente que lo que queremos llegar al final. En este ejemplo anterior, tomamos cada una de las personas, pero perdió por completo la información sobre el objeto con el número 2, cuyo propietario no fue encontrada.

Si nos trasladamos las tablas en una consulta en algunos lugares, y comenzaríamos con «… De Realty dejó unirse a los pueblos …» cualquier propiedad, no habríamos perdido, que no le dirá acerca de las personas.

Pero no tenga miedo de la conexión izquierda, cambiar a plena externa, que se incluye en los resultados y el juego, y no las líneas que coincidan.

Después de todo, el volumen de muestra es a menudo muy grande, y los datos extra es realmente inútil. Lo más importante – para averiguar lo que quiere conseguir un buen resultado: de todas las personas con una lista de sus bienes disponibles o toda la lista de propiedades con sus dueños (si lo hay).

Izquierda se unen – el uso típico de error: Solicitud es correcta al establecer las condiciones en el caso de

El segundo error también se asocia con la pérdida de datos, y no siempre son evidentes de inmediato.

Volvamos a la consulta cuando nos fuimos recibidos a través de conexiones de datos para todas las personas y su propiedad existente. Recuerde lo siguiente con izquierda unirse a SQL de ejemplo:

DE Pueblos LEFT JOIN Realty_peoples EN Peoples.id = Realty_peoples.id_peoples;

Supongamos que queremos aclarar la solicitud y no da salida a los datos, en el que el tipo de ley – "Propiedad". Si nos limitamos a añadir, utilizando la izquierda unirse a SQL, un ejemplo de la siguiente condición:

Donde tipo "Propiedad"

vamos a perder los datos sobre las personas que no tienen ninguna propiedad, debido a que el nulo valor nulo, no se compara la siguiente manera:

consulta1

identificación

L_name

f_nombre

Middle_name

cumpleaños

id_realty

tipo

5

Gerasimovsky

esperanza

P.

03/14/1992

4

partes comunes

6

Gerasimovsky

Oleg

Albertovich

01/29/1985

4

partes comunes

7

Sukhanovskaya

jurado

A.

09/25/1976

3

copropiedad total

8

Sukhanovskaya

Julia

Y.

01.10.2001

3

copropiedad total

Para evitar que se produzcan errores por esta razón, lo mejor es establecer la condición de selección inmediatamente después de la conexión. Sugerimos tener en cuenta lo siguiente con la izquierda unirse ejemplo sql.

Pueblos SELECT. *, Realty_peoples.id_realty, Realty_peoples.type

DE Pueblos

LEFT JOIN Realty_peoples ON (Peoples.id = Realty_peoples.id_peoples Y escriba "Propiedad")

El resultado será el siguiente:

consulta1

identificación

L_name

f_nombre

Middle_name

cumpleaños

id_realty

tipo

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

esperanza

P.

03/14/1992

4

partes comunes

6

Gerasimovsky

Oleg

Albertovich

01/29/1985

4

partes comunes

7

Sukhanovskaya

jurado

A.

09/25/1976

3

copropiedad total

8

Sukhanovskaya

Julia

Y.

01.10.2001

3

copropiedad total

Por lo tanto, siguiendo la simple a la izquierda unirse a sql ejemplo, recibimos una lista de todas las personas, moviéndose más allá, una de estas propiedades en una participación en el capital / conjunta.

Como conclusión, me gustaría destacar una vez más que una muestra de cualquier información de la base de datos deben tomarse con responsabilidad. Muchos matices abierto frente a nosotros con la izquierda se unen ejemplo sencillo sql, la explicación de los cuales uno – antes de empezar a escribir, incluso consulta básica, debe cuidadosamente para comprender lo que queremos llegar al final. Buena suerte!