Bienvenidos a una nueva semana, y con esto, a una nueva entrada de en nuestro blog formativo en PostgreSQL. En la entrada de hoy hablaremos de uno de los comandos más importantes en SQL, aplicado específicamente a nuestro motor de Base de Datos. Estudiaremos con ejemplos la utilización y ejecución de la joins; JOIN en PostgreSQL.
Trataremos los diferentes tipos de JOIN uno a uno y mediante ejemplos sencillos y prácticos.
Para ver más ejemplos de Join y conocer a fondo el tema, mira nuestro Curso de sentencias DDL, DML, DCL, TCL y el Curso de Métodos Avanzados de Creación de Tablas.
El lenguaje SQL te permite combinar los registros de una o más tablas en un Sistema Gestor de Base de Datos Objeto Relacional (siglas en inglés ORDBMS) como PostgreSQL, mediante la sentencia JOIN. Disponemos de varios tipos de combinaciones de registros, combinación interna (INNER JOIN), combinación externa (OUTER JOIN) y producto cartesiano (CROSS JOIN).
En éste articulo se explican qué registros obtenemos con cada tipo de combinación junto a la sentencia y su resultado. Para ello partimos con dos tablas, ‘producto’ y ‘provincia’, con una serie de filas.
INNER JOIN (Combinación interna)
Con esta operación se combina los registros de ambas tablas según lo que se especifique en el predicado del JOIN, es el más utilizado.
Los registros que vamos a obtener son todos aquellos en los que el campo común (id_producto) exista en las dos tablas. Los registros de la tabla producto que su id_producto no coincida con el id_producto de la tabla provincia y viceversa, los omite.
SELECT * FROM producto INNER JOIN origen ON producto.id_producto = origen.id_producto;
OUTER JOIN (Combinación externa)
Mediante esta operación no es necesario que una fila de una tabla tenga relación con la otra tabla que se combina. Existen tres tipos de combinaciones externas, el LEFT JOIN, RIGHT JOIN y el FULL JOIN.
LEFT OUTER JOIN
El resultado de esta combinación contiene todos los registro de la tabla izquierda (la primera tabla que se menciona en la consulta) junto a todos los registros que coincida con la segunda tabla que se especifica en la sentencia.
Vemos como obtenemos el producto ‘Kiwi’ que su id_producto no corresponde con ningún id_producto de la tabla origen, en su lugar aparece un nulo ya que no existe.
SELECT * FROM producto LEFT JOIN origen ON producto.id_producto = origen.id_producto;
RIGTH OUTER JOIN
Éste funciona igual que el anterior con la diferencia que los registros que te devuelve son los que coincidan en la tabla izquierda junto a todas las filas de la tabla de la derecha. Es el caso contrario.
En éste caso obtenemos la provincia ‘Sevilla’ que no tiene ningún dato en la tabla producto, por ello nos aparece ese nulo, junto a todos los registros que su id_producto existen en ambas tablas.
SELECT * FROM producto RIGHT JOIN origen ON producto.id_producto = origen.id_producto;
FULL OUTER JOIN
Con éste tipo de combinación externa, vamos a retornar todos los registros que cumplan la condición más los registros de la primera tabla y la segunda tabla.
En éste ejemplo se obtienen todas las filas de la tabla producto y todas las provincias, incluyendo aquellas tuplas que no existan en la otra tabla donde aparecerá un nulo.
SELECT * FROM producto FULL JOIN origen ON producto.id_producto = origen.id_producto;
CROSS JOIN (Cruzada)
Éste tipo de JOIN se suele utilizar poco, lo que realiza es un producto cartesiano de los registros de las dos tablas. El resultado que obtenemos son todos los registros de la tabla izquierda (productos) combinados con cada uno de los registros de la tabla de la derecha (provincias). No se incluye ningún predicado que filtre el resultado.
SELECT * FROM producto CROSS JOIN origen;
Esperamos que los ejemplos entregados ayuden a comprender adecuadamente el funcionamiento de este mecanismo de selección de información.
Contamos con todos ustedes para la entrada de la próxima semana, recuerda que en nuestra plataforma tenemos varios cursos formativos, todos ellos íntegramente en español. ¡Muchísimas gracias y hasta la próxima semana!