Consultas multitabla SQL
Enviado por daniela111222 • 6 de Julio de 2021 • Trabajo • 1.875 Palabras (8 Páginas) • 193 Visitas
1.1 Consultas multitabla SQL 1
1.1.1 Composiciones cruzadas (Producto cartesiano)
El producto cartesiano de dos conjuntos, es una operación que consiste en obtener otro conjunto cuyos elementos 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.
[pic 1]
Imagen: Imagen extraída de Wikipedia. Autor: GermanX
Ejemplo
Suponemos que tenemos una base de datos con dos tablas: empleado y departamento.
SELECT *
FROM empleado;
+--------+-----------+--------------+-----------+-----------+---------------------+
| codigo | nif | nombre | apellido1 | apellido2 | codigo_departamento |
+--------+-----------+--------------+-----------+-----------+---------------------+
| 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;
El resultado sería el siguiente:
+--------+-----------+--------+-----------+-----------+---------------------+---------------------------+-------------+--------+
| codigo | nif | nombre | apellido1 | apellido2 | codigo_departamento | codigo | nombre | presupuesto | gastos |
+--------+-----------+--------+-----------+-----------+---------------------+---------------------------+-------------+--------+
| 1 | 32481596F | Aarón | Rivero | Gómez | 1 | 1 | Desarrollo | 120000 | 6000 |
| 2 | Y5575632D | Adela | Salas | Díaz | 2 | 1 | Desarrollo | 120000 | 6000 |
| 3 | R6970642B | Adolfo | Rubio | Flores | 3 | 1 | Desarrollo | 120000 | 6000 |
| 1 | 32481596F | Aarón | Rivero | Gómez | 1 | 2 | Sistemas | 150000 | 21000 |
| 2 | Y5575632D | Adela | Salas | Díaz | 2 | 2 | Sistemas | 150000 | 21000 |
| 3 | R6970642B | Adolfo | Rubio | Flores | 3 | 2 | Sistemas | 150000 | 21000 |
| 1 | 32481596F | Aarón | Rivero | Gómez | 1 | 3 | Recursos Humanos | 280000 | 25000 |
| 2 | Y5575632D | Adela | Salas | Díaz | 2 | 3 | Recursos Humanos | 280000 | 25000 |
| 3 | R6970642B | Adolfo | Rubio | Flores | 3 | 3 | Recursos Humanos | 280000 | 25000 |
+--------+-----------+--------+-----------+-----------+---------------------+---------------------------+-------------+--------+
1.1.2 Composiciones internas (Intersección)
La intersección de dos conjuntos es una operación que resulta en otro conjunto que contiene sólo los elementos comunes que existen en ambos conjuntos.
[pic 2]
Imagen: Imagen extraída de Wikipedia. Autor: Kismalac.
Ejemplo
Para poder realizar una operación de intersección entre las dos tablas debemos utilizar la cláusula WHERE para indicar la columna con la que queremos relacionar las dos tablas. Por ejemplo, para obtener un listado de los empleados y el departamento donde trabaja cada uno podemos realizar la siguiente consulta:
SELECT *
FROM empleado, departamento
WHERE empleado.codigo_departamento = departamento.codigo
El resultado sería el siguiente:
+--------+-----------+--------+-----------+-----------+---------------------+--------+------------------+-------------+--------+
| codigo | nif | nombre | apellido1 | apellido2 | codigo_departamento | codigo | nombre | presupuesto | gastos |
+--------+-----------+--------+-----------+-----------+---------------------+--------+------------------+-------------+--------+
| 1 | 32481596F | Aarón | Rivero | Gómez | 1 | 1 | Desarrollo | 120000 | 6000 |
| 2 | Y5575632D | Adela | Salas | Díaz | 2 | 2 | Sistemas | 150000 | 21000 |
...