Blog
La capacidad de unir tablas en SQL es una de las características más importantes en una base de datos, permite al usuario crear un nuevo conjunto de datos de tablas, por ejemplo las columnas de la primera tabla con las columnas de las segunda tabla.
Unir dos tablas provoca lo que se llama una “multiplicación cartesiana” esto una crea M*N filas en el resultado final (asumiendo que la primera tabla tiene M filas y la segunda tiene N filas), sin embargo, cuando unimos dos tablas se debe usar una condición de combinación que nos permite limitar la cantidad de filas retornadas.
Veamos un ejemplo:
Tenemos una base de datos que contiene clientes y órdenes que han hecho los clientes, la tabla órdenes apunta a la identificación del cliente que éste tiene en la tabla de clientes, esto es para saber la orden que pidió cada cliente.
Vamos a ver todas las órdenes hechas por nuestros clientes al igual que sus nombres.
CREATE TABLE clientes ( id INTEGER PRIMARY KEY, nombre TEXT, apellido TEXT ); CREATE TABLE ordenes ( id INTEGER PRIMARY KEY, cliente_id INTEGER, nombre_producto TEXT ); INSERT INTO clientes (nombre, apellido) VALUES ("David", "Romero"); INSERT INTO ordenes (cliente_id, nombre_producto) VALUES (last_insert_rowid(), "Galletas"), (last_insert_rowid(), "Agua"); SELECT nombre_producto, nombre, apellido FROM ordenes JOIN clientes ON ordenes.cliente_id = clientes.id;
Nota: last_insert_rowid() nos da el valor del ID del ultimo INSERT que hicimos.
Ejercicio:
Usaremos una TABLA muy similar a la del ejemplo de antes para el ejercicio:
CREATE TABLE clientes ( id INTEGER PRIMARY KEY, nombre TEXT, apellido TEXT ); CREATE TABLE ordenes ( id INTEGER PRIMARY KEY, cliente_id INTEGER, nombre_producto TEXT ); INSERT INTO clientes (nombre, apellido) VALUES ("David", "Romero"); INSERT INTO ordenes (cliente_id, nombre_producto) VALUES (1, "Cerveza"), (1, "Vino"); INSERT INTO clientes (nombre, apellido) VALUES ("Maria", "Fernandez"); INSERT INTO ordenes (cliente_id, nombre_producto) VALUES (2, "Pan"), (2, "Leche");
Escribe una consulta SELECT en la cual se seleccione el nombre del producto y el nombre del cliente que compró el producto y solamente si su nombre es Maria.
SELECT nombre_producto, nombre FROM ordenes JOIN clientes ON ordenes.cliente_id = clientes.id WHERE nombre = 'Maria';
Aprende el resto de funciones que puedes emplear con nuestro curso SQL: