Como vincular tablas
Para vincular tablas debemos establecer relaciones entre ellas, el tipo de relación se define por los comandos (INNER JOIN, LEFT JOIN y RIGHT JOIN).
Cuando hay mas de dos tablas separamos con parentesis las distintas relaciones entre tablas, se deben relacionar todas las tablas una sola vez, en caso de que dos tablas distintas de la misma relación ataquen a una tercera tabla comun para obtener dos registros distintos. La tabla comun deberá aparecer dos veces en la consulta con nombres distintos. Para relacionar mas de una tabla, primero abrimoa tantos parentesis como relaciones haya menos uno, despues ponemos la primera relación y cerramos parentesis, para la segunda relación y siguientes despues del parentesis ponemos el comando de relacióny una nueva tabla, que se relacionará con alguna de las tablas ya relacionadas. La instrucción SQL sabe la tabla a la que ataca por la igualdad establecida despues del ON.
El formato es el siguiente:
| FROM (Tabla1) (Comando) (Tabla2) ON (Tabla1.Campox = Tabla2.Campox[, AND Tabla1.Campox = Tabla2.campox] |
| LEFT JOIN = Se listan todos los campos de la tabla de la izquierda y solo aquellos de la derecha que coincidan. |
| RIGHT JOIN = Se listan todos los campos de la tabla de la derecha y solo aquellos de la derecha que coincidan. |
| INNER JOIN = Se listan todos los registros de ambas tablas. |
| Ejemplos: | <Pagina Principal> |
______________________________________________________________________________________________
1.- Dos tablas
| A-FROM Clientes LEFT JOIN Provincias ON Clientes.CodigoProvincia = Provincias.CodigoProvincia. |
| B-FROM Clientes RIGHT JOIN Provincias ON Clientes.CodigoProvincia = Provincias.CodigoProvincia. |
| A-En este caso se listarán todos los clientes con sus provincias correspondientes. En caso de provincias sin clientes no aparecerá ningun registro. |
| B-En este caso se listarán todos las provincias con sus clientes correspondientes correspondientes. En caso de no tener provincia asignada el cliente no aparecerá. |
| A |
|
| B |
|
2.- Tres tablas
| FROM (Tabla1 LEFT JOIN Tabla2 ON Tabla1.Articulo = Tabla2.Articulo) RIGHT JOIN Tabla3 ON Tabla1.Articulo = Tabla3.Articulo; |
| Se listarán Todos los elementos de la tabla3, los elementos de la tabla1 que coincidan con la tabla3 y aquellos elementos de la tabla2 que coincidan con la tabla1. Como de la tabla1 solo se listan los que coinciden con la tabla3, si hay elementos de la tabla 2 que coincidan con la tabla1, pero estos no tienen coincidencia con la tabla3, no se listarán. |

3.- Cuatro tablas
| FROM ((Tabla1 AS T1 LEFT JOIN Tabla2 AS T2 ON T1.Articulo = T2.Articulo) RIGHT JOIN Tabla3 AS T3 ON T1.Articulo = T3.Articulo) LEFT JOIN Tabla4 AS T4 ON T3.Articulo = T4.Articulo; |
| En este ejemplo hemos renombrado las tablas. Esta tecnica se utiliza cuando las tablas tienen nombres largos o complicados. Con esto nos ahorramos código y posibles errores de sintaxis. La relación entre las tablas está representada visualmente en la imagen siguiente. |
