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:
- Seleccionado correctamente el orden de las tablas para las que se pierden los datos.
- 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!