En este artículo veremos las uniones de tablas en PostgreSQL. Las uniones las utilizamos frecuentemente para mostrar resultados de una combinación de tablas. En función de los resultados que esperamos deberemos utilizar un método de unión u otro.
Tipos de join
Existen 6 formas de unir tablas, 4 formas si utilizas columnas en común entre las tablas; inner join, left outer join, right outer join, full outer join y otras dos formas en la cual no se especifican los campos de cruce; natural join y cross join.
Inner join
Se utiliza este método de unión para mostrar aquellos resultados que coinciden en ambas tablas por el campo de unión. Puedes leer más detalles y ejemplos de inner join en este otro artículo.
Left join
Se utiliza este método de unión para mostrar aquellos resultados que coinciden en ambas tablas por el campo de unión y además, todos los valores de la tabla de la izquierda. Puedes leer más detalles y ejemplos de left join en este otro artículo.
Right join
Se utiliza este método de unión para mostrar aquellos resultados que coinciden en ambas tablas por el campo de unión y además, todos los valores de la tabla de la derecha. Puedes leer más detalles y ejemplos de right join en este otro artículo.
Full join
Se utiliza este método de unión para mostrar todos los resultados que coinciden o no entre las dos tablas. Podemos decir que es una combinación de los tres métodos anteriores. Puedes leer más detalles y ejemplos de full join en este otro artículo.
Cross join
Se utiliza este método de unión para relacionar todo con todo, es decir, cada columna de la tabla 1 se relacionará con cada columna de la tabla 2 produciendo un producto cartesiano (nada recomendable). Puedes leer más detalles y ejemplos de full join en este otro artículo.
Otros tipos de join
Natural join
Se utiliza este método de unión para unir las tablas por el nombre de los campos (necesario clave foránea). Junto a natural join se le puede especificar el tipo de join inner, left, right o full join.
Auto join
Decimos que un cruce de tablas es auto join cuando la tabla con la que se cruza es la misma, es decir se cruza consigo misma, pero por campos distintos. Junto a auto join se le puede especificar el tipo de join inner, left, right o full join. (auto join no existe como tal, es una forma de denominar a este tipo de cruces)