Las consultas multitabla nos permiten consultar información en más de una tabla. La única diferencia respecto a las consultas sencillas es que vamos a tener que especificar en la cláusula FROM cuáles son las tablas que vamos a usar y cómo las vamos a relacionar entre sí.
Para realizar este tipo de consultas podemos usar dos alternativas, la sintaxis de SQL 1 (SQL-86), que consiste en realizar el producto cartesiano de las tablas y añadir un filtro para relacionar los datos que tienen en común, y la sintaxis de SQL 2 (SQL-92 y SQL-2003) que incluye todas las cláusulas de tipo JOIN.
El producto cartesiano de dos conjuntos, es una operación que consiste en obtener otro conjunto cuyos ele- mentos son todas las parejas que pueden formarse entre los dos conjuntos. Por ejemplo, tendríamos que coger el primer elemento del primer conjunto y formar una pareja con cada uno de los elementos del segundo conjunto. Una vez hecho esto, repetimos el mismo proceso para cada uno de los elementos del primer conjunto.
Suponemos que tenemos una base de datos con dos tablas: empleado y departamento.
CREATE TABLE empleado (
codigo INT NOT NULL,
nif VARCHAR(10),
nombre VARCHAR(20),
apellido1 VARCHAR(20),
apellido2 VARCHAR(20),
codigo_departamento INT,
PRIMARY KEY (codigo));
CREATE TABLE departamento(
codigo INT NOT NULL,
nombre VARCHAR(20),
presupuesto FLOAT,
PRIMARY KEY (codigo));
insert INTO empleado VALUES
(1,"32481596F","Aarón","Rivero","Gómez",1),
(2,"Y5575632D","Adela","Salas","Díaz",2),
(3,"R6970642B","Adolfo","Rubio","Flores",3);
INSERT INTO departamento VALUES
(1,"Desarrollo",120000),
(2,"Sistemas",150000),
(3,"Recursos Humanos",280000) ;
SELECT *FROM empleado;
| 1 | 32481596F | Aarón | Rivero | Gómez | 1 |
| 2 | Y5575632D | Adela | Salas | Díaz | 2 |
| 3 | R6970642B | Adolfo | Rubio | Flores | 3 |
SELECT *FROM departamento;
±-------±-----------------±------------+
| codigo | nombre | presupuesto |
±-------±-----------------±------------+
| 1 | Desarrollo | 120000 |
| 2 | Sistemas | 150000 |
| 3 | Recursos Humanos | 280000 |
±-------±-----------------±------------+
El producto cartesiano de las dos tablas se realiza con la siguiente consulta:
SELECT * FROM empleado, departamento;