0% encontró este documento útil (0 votos)
35 vistas14 páginas

PDF. Bases de Datos. Tema 11

Cargado por

sergio
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
35 vistas14 páginas

PDF. Bases de Datos. Tema 11

Cargado por

sergio
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

BASES DE DATOS

Consultas multitabla y
subconsultas

11
/ 1. Introducción y contextualización práctica 3

/ 2. Consultas sobre varias tablas 4


2.1. Composiciones internas: producto cartesiano 5
2.2. Composiciones externas 6

/ 3. Caso práctico 1: “Sentencias en Oracle SQL Live” 7

/ 4. Subconsultas 7
4.1. Subconsultas de varias filas 8
4.2. Subconsultas con exists, from, join y having 9

/ 5. Funciones de agregado: unión e intersección 11

/ 6. Funciones de agregado: diferencias, combinación


de operaciones y ordenación 12

/ 7. Caso práctico 2: “Subconsultas en Oracle SQL Live” 13

/ 8. Resumen y resolución del caso práctico de la unidad 13

/ 9. Bibliografía 14

© MEDAC 978-84-18864-07-0
Reservados todos los derechos. Queda rigurosamente prohibida, sin la autorización escrita de los titulares del copyright,
bajo las sanciones establecidas en las leyes, la reproducción, transmisión y distribución total o parcial de esta obra por
cualquier medio o procedimiento, incluidos la reprografía y el tratamiento informático.
Conocer las posibilidades de las consultas multitabla.

Realizar y manejar consultas multitabla con fluidez.

Comprender las características y método de utilización de las subconsultas.

Conocer el manejo de uniones, intersecciones y diferencia de consultas.

/ 1. Introducción y contextualización práctica


En temas anteriores, hemos estudiado varios tipos de consultas a bases de datos, pero, en todos los casos, se referían
al acceso a la información contenida en una única tabla.

No obstante, según hemos estudiado, una de las principales características de las bases de datos es que reparten la
información que contienen en varias tablas, con el fin de evitar el duplicado de registros.

Por lo tanto, es obvio que, en muchas ocasiones, puede ser útil obtener información de varias tablas a través de una
misma sentencia. De hecho, es bastante habitual que sea el caso en entornos profesionales.

Mediante el estudio de este tema, profundizaremos, en primer lugar, en cómo realizar consultas multitabla y
en la problemática que existe al respecto. También veremos ejemplos prácticos. Posteriormente, estudiaremos
el uso y características de las subconsultas, también por medio de
ejemplos prácticos.

Al igual que en temas anteriores, en este caso, la práctica es muy importante,


para poder dominar la utilización de este tipo de consultas y beneficiarse de
las ventajas y del potencial que ofrecen.
Fig. 1. Podemos utilizar Oracle SQL Developer
Escucha el siguiente audio en el que planteamos la contextualización práctica para prácticar con consultas aplicando la
del tema. Encontrarás su resolución en el apartado final. teoría que se verá en el tema.

Audio intro. “Vamos a practicar con


consultas multitabla y subconsultas”
https://bit.ly/30LFQAv
TEMA 11. CONSULTAS MULTITABLA Y SUBCONSULTAS
Bases de datos /4

/ 2. Consultas sobre varias tablas


En el mundo de las bases de datos, es muy habitual recabar datos de varias tablas en una misma consulta. Por
ejemplo, si necesitamos obtener los datos de los clientes que han comprado un artículo determinado, necesitaremos
obtener datos de la tabla CLIENTES y de la tabla VENTAS al mismo tiempo. Entre ambas tablas existirá una relación,
por ejemplo, a través del campo ID_CLIENTE.

Utilizando el comando SELECT, es posible realizar consultas a varias tablas en una misma sentencia, mediante la
operación conocida como composición o JOIN. En el siguiente ejemplo, se muestra una consulta multitabla realizada
en Oracle SQL Live:

SELECT E. NOMBRE, C.NOMBRE


FROM EMPLEADOS E
JOIN CLIENTES C ON (E.DNI = C.DNI);

Código 1. Consulta sobre varias tablas.

En el ejemplo anterior, se extraen datos de las tablas EMPLEADOS y CLIENTES a través de una sola consulta, lo que
permite ahorrar tiempo y recursos al sistema, por lo que se aumenta el rendimiento de la consulta y, por tanto, del
sistema.

La sintaxis que podemos definir para realizar consultas multitablas es la siguiente, según SQL 99:

SELECT tablaA.columna1, tablaA.columna2, …, tablaB.columna1, tablaB.clumna2, …


FROM tablaA
[(INNER) JOIN tablaB USING columna]
[(INNER) JOIN tablaB ON (tablaA.colUM = tablaB.colum)]
[NATURAL JOIN tablaB]
[CROSS JOIN tablaB]
[LEFT JOIN tablaB ON (tabla.columna = tablaB.columna)]
[RIGHT JOIN tablaB ON (tabla.columna = tablaB.columna)]
[FULL OUTER JOIN tablaB ON (tabla.columna = tablaB.columna)]

Código 2. Sintaxis de sentencias multitabla, según SQL 99.

Las diferentes cláusulas y opciones existentes (JOIN) las estudiaremos con mayor detalle a lo largo del tema. Estas
se pueden clasificar en dos tipos de composiciones:

• Composiciones internas

• Composiciones externas

Audio 1. “Naturall join y Cross join”


https://bit.ly/30OzHDN
TEMA 11. CONSULTAS MULTITABLA Y SUBCONSULTAS
/5 MEDAC · Instituto Oficial de Formación Profesional

2.1. Composiciones internas: producto cartesiano


Las composiciones internas se caracterizan por asociar una fila de una tabla a todas las filas de otra, eliminando
aquellas filas que no cumplan la condición indicada. En otras palabras, es el resultado de todas las combinaciones de
filas posibles entre las dos tablas de la consulta, en base a un criterio definido. El ejemplo de consulta indicada en el
Código 2 sería un ejemplo de composición interna.

Para relacionar las tablas, se utiliza la cláusula WHERE y se indican las columnas que están relacionadas entre sí.

WHERE tablaA.columna1 = tablaB.columna2

Código 3. Sentencia WHERE para emparejar campos.

Para su uso, deben cumplirse una serie de reglas:

• Se pueden usar más de dos columnas como columnas de emparejamiento.

• Se permite combinar entre sí varias tablas, no solo dos.

• Se permite indicar columnas de varias tablas en la sentencia de consulta, sean o no de emparejamiento.

• En el caso de que existan columnas que tengan el mismo nombre en ambas tablas, será necesario identificarlas
indicando la tabla de procedencia.

• Se aconseja utilizar el menor número de tablas posible.

En el siguiente ejemplo se desea obtener los datos de los clientes que han comprado el producto PC:

SELECT CLIENTES.Id_cliente, CLIENTES.nombre, fecha_compra


FROM CLIENTES c, VENTAS v
WHERE c.id_cliente = v.id_cliente AND v.producto = ‘PC’

Código 4. Ejemplo de sentencia multitabla.

En este ejemplo, debe considerarse que se han creado alias para las tablas CLIENTES y VENTAS (c y v, respectivamente).
Esto es totalmente opcional y se realiza por un motivo de sencillez. Como se puede comprobar, la cláusula WHERE
admite varias condiciones sobre las tablas indicadas, mediante el uso del operador AND. En el ejemplo anterior
también podría utilizarse la cláusula ORDER BY para obtener los datos ordenados de una manera determinada.

En el siguiente ejemplo, se utilizan datos de más de dos tablas. Esto puede deberse a que no hay una relación directa
entre ambas, pero sí a través de una tercera (ASISTENCIA):

SELECT nombre, apellido, fecha_inicio, fecha_fin, as.asignatura


FROM ALUMNOS a, ASIGNATURAS as, ASISTENCIA asi
WHERE a.id_alumno = asi.id_alumno AND as.asignatura = asi.asignatura

Código 5. Ejemplo de sentencia multitabla con más de dos tablas.


TEMA 11. CONSULTAS MULTITABLA Y SUBCONSULTAS
Bases de datos /6

2.2. Composiciones externas


Las composiciones externas no son resultado de un producto cartesiano, ya que en el resultado pueden existir filas
que no tengan correspondencia entre tablas. Es decir, las filas de una de las tablas se combinan con la de la otra, una
a una.

En el formato de SQL 92, las composiciones externas se marcan a través del carácter (+), que se incluirá en la
cláusula WHERE antes de establecer la condición de igualdad.

SELECT C.NOMBRE, C.APELLIDO, V.CANTIDAD


FROM CLIENTES c, VENTAS v
WHERE C.ID_CLIENTE(+) = V.ID_CLIENTE

Código 6. Ejemplo de composición externa.

Entenderemos mejor el concepto en los siguientes puntos del tema.

En la siguiente imagen, se muestra de una manera gráfica e intuitiva la diferencia entre los diferentes tipos de
composiciones (JOINS) existentes en SQL, en base a la sintaxis de SQL 99. Como se puede apreciar, las de tipo
interno (INNER JOIN) combinan elementos comunes de las tablas A y B.

Sin embargo, las composiciones externas (LEFT JOIN, RIGHT JOIN, OUTER JOIN) pueden combinar todos los
elementos de una de las tablas, además de los que sean comunes con la segunda tabla, o únicamente los elementos
que no son comunes. También se pueden mostrar todos los elementos de ambas tablas, o bien todos los elementos
que no sean comunes a ambas tablas, en función de los resultados que se desee obtener en cada caso.

Fig. 2. Tipos de JOINs en SQL.

Vídeo 1. “Concepto y ejemplos de uso de


sentencias Inner join, Left join y Right
join”
https://bit.ly/3iz0rOt
TEMA 11. CONSULTAS MULTITABLA Y SUBCONSULTAS
/7 MEDAC · Instituto Oficial de Formación Profesional

/ 3. Caso práctico 1: “Sentencias en Oracle SQL Live”


Planteamiento: Dado que es muy importante practicar con sentencias SQL para adquirir conocimiento de estas y de
su funcionamiento, vamos a utilizar la herramienta Oracle Live SQL que vimos en temas anteriores.

Nudo: Concretamente, vamos a crear las siguientes tablas, siguiendo el procedimiento que vimos en temas anteriores:

PRODUCTOS CATEGORÍAS

ID_PRODUCTO ID_CATEGORÍA

NOMBRE_PRODUCTO NOMBRE_CATEGORÍA

ID_CATEGORÍA

PRECIO

Tabla 1. Ejemplo

Sobre cada tabla, crearemos varios elementos (por lo menos 5 en cada una). El objetivo de la actividad es practicar
con las consultas multitabla estudiadas anteriormente, de manera que se utilicen varias consultas tipo JOIN. Hay que
tener en cuenta que puede (y debe) haber ID_CATEGORÍA que no tienen productos asociados.

Se debe especificar el objetivo de la consulta y explicar el resultado obtenido.

Desenlace: Una posible consulta puede ser la siguiente, en la que se devuelven los nombres de producto y de
categoría de ambas tablas a través de una cláusula INNER JOIN, es decir, solo los que son comunes a ambas tablas.

SELECT NOMBRE_PRODUCTO, ID_CATEGORIA


FROM PRODUCTOS P
INNER JOIN CATEGORÍAS C ON P.ID_PRODUCTO = C.ID_PRODUCTO

Código 7. Ejemplo de composición interna sobre las tablas indicadas.

/ 4. Subconsultas
Las subconsultas se pueden definir como una consulta dentro de otra consulta, es decir, se aprovechan los resultados
de una consulta específica para realizar otra consulta nueva, en una única sentencia. La sintaxis que suelen seguir es la
siguiente: En color azul se marca lo que se conoce como SUBSELECT (o segunda consulta), que debe ir entre paréntesis:

SELECT Columnas
FROM tabla
WHERE expresión [OPERADOR]
(SELECT colums FROM tabla);
Código 8. Sintaxis habitual de una subconsulta.

El operador que se puede utilizar puede ser cualquiera de los siguientes: <,>, <=, >=, !=, = o IN. En ese caso, la
subconsulta suele devolver un único valor.
TEMA 11. CONSULTAS MULTITABLA Y SUBCONSULTAS
Bases de datos /8

Además de en la cláusula WHERE, la subconsulta también puede incluirse en el interior de cláusulas como HAVING
o FROM.

Por ejemplo, podemos necesitar información de los empleados de un determinado departamento (VENTAS,
en nuestro caso práctico), cuyo ID no es conocido. Para ello, puede ser necesario obtener datos de dos tablas:
EMPLEADOS y DEPARTAMENTOS. En la primera, está el ID_Dpto y en la segunda, el nombre.

SELECT NOMBRE, APELLIDO, DNI


FROM EMPLEADOS
WHERE ID_DPTO = (Departamento cuyo nombre es Ventas);

Código 9. Ejemplo de primera parte de subconsulta.

Para saber el código del departamento VENTAS necesitamos buscarlo en DEPARTAMENTOS, mediante una subconsulta:

SELECT ID_DPTO
FROM DEPARTAMENTOS
WHERE NOMBRE = ‘VENTAS’;

Código 10. Ejemplo de segunda parte de subconsulta

De esta manera, la consulta global quedaría de la siguiente forma:

SELECT NOMBRE, APELLIDO, DNI


FROM EMPLEADOS
WHERE ID_DPTO = (SELECT ID_DPTO FROM DEPARTAMENTOS
WHERE NOMBRE = ‘VENTAS’);

Código 11. Ejemplo de subconsulta

4.1. Subconsultas de varias filas


Anteriormente indicamos que una subconsulta solo puede obtener una fila, en el caso en el que se utilicen operadores
de comparación, pero, a veces, es necesario mostrar más. Para ello, se utilizan otras instrucciones que lo permiten:

INSTRUCCIÓN USO

Se compara con cualquier fila de la subconsulta. Es válida si existe algún registro de la


ANY / SOME
subconsulta que lo permita.

Se compara con todas las filas de la subconsulta. Es válida si la comparación con todos los
ALL
registros de la subconsulta es cierta.

IN Se comprueba si un determinado valor está en el resultado de la subconsulta.

NOT IN Se comprueba si un valor no está en la subconsulta, es decir, el contrario del anterior.

Tabla 2. Instrucciones para subconsultas múltiples.


TEMA 11. CONSULTAS MULTITABLA Y SUBCONSULTAS
/9 MEDAC · Instituto Oficial de Formación Profesional

Vamos a ver algunos ejemplos para entender mejor su uso. Mediante la siguiente consulta, se obtendrían los
empleados que se encuentran en la tabla de CLIENTES:

SELECT NOMBRE, APELLIDOS FROM EMPLEADOS


WHERE DNI IN
(SELECT DNI FROM CLIENTES);

Código 12. Ejemplo de subconsulta múltiple utilizando IN.

En el siguiente ejemplo, se selecciona información sobre el empleado con mayor salario del departamento de
VENTAS:

SELECT NOMBRE, APELLIDOS FROM EMPLEADOS


WHERE SALARIO > ALL (SELECT SALARIO FROM EMPLEADOS
WHERE NOMBRE_DPTO = ‘VENTAS’);

Código 13. Ejemplo de subconsulta múltiple utilizando ALL.

En este caso, obtenemos los datos de los empleados con un salario mayor que alguno de los empleados (id_empleado
= 5):

SELECT NOMBRE, APELLIDOS, SALARIO FROM EMPLEADOS


WHERE SALARIO > ANY
(SELECT SALARIO FROM EMPLEADOS WHERE ID_EMPLEADO = 5);

Código 14. Ejemplo de subconsulta múltiple utilizando ANY.

4.2. Subconsultas con exists, from, join y having


Subconsultas con exists

Mediante esta cláusula, se obtiene el valor «verdadero» si la subconsulta devuelve algún valor. En caso contrario,
devuelve «falso». Se puede utilizar también negada: «NOT EXISTS».

En este ejemplo, se muestran los productos que se encuentran en la tabla ALMACEN. Puede observarse que se
utilizan consultas correlacionadas (incluyen alias de una tabla en concreto):

SELECT NOMBRE, PRECIO, FABRICANTE FROM PRODUCTOS P


WHERE EXISTS (SELECT NOMBRE, PRECIO FROM ALMACEN
WHERE NOMBRE = P.NOMBRE AND PRECIO = P.PRECIO);

Código 15. Ejemplo de subconsulta múltiple utilizando ALL.


TEMA 11. CONSULTAS MULTITABLA Y SUBCONSULTAS
Bases de datos / 10

Subconsultas con la cláusula from y join

Las subconsultas pueden anidarse con otras cláusulas, como FROM o JOIN. El objetivo es el mismo que en los casos
que hemos visto hasta ahora, y es el de obtener, mediante la subconsulta, datos necesarios para realizar la consulta
principal.

Por ejemplo, si quisiésemos conocer datos sobre los empleados de cargo «Responsables» con un salario determinado,
podemos utilizar las siguientes consultas, mediante FROM y JOIN:

SELECT E.NOMBRE
FROM EMPLEADOS E,
(SELECT NOMBRE, ID_EMPLEADO FROM EMPLEADOS
WHERE SALARIO > 1000) EMP2
WHERE E.RESPONSABLE = EMP2.ID_EMPLEADO;

Código 16. Ejemplo de subconsulta con FROM.

SELECT E.NOMBRE
FROM EMPLEADOS E,
JOIN
(SELECT NOMBRE, ID_EMPLEADO FROM EMPLEADOS
WHERE SALARIO > 1000) EMP2
ON E.RESPONSABLE = EMP2.ID_EMPLEADO;

Código 17. Ejemplo de subconsulta con JOIN

Subconsultas con having

Las subconsultas también pueden utilizarse de manera conjunta con GROUP BY y HAVING. A través del siguiente
ejemplo, se selecciona el departamento cuya media de salarios sea mayor que la total:

SELECT DEPARTAMENTO,
FROM EMPLEADOS GROUP BY DEPARTAMENTO
HAVING AVG(SALARIO) > (SELECT AVG(SALARIO) FROM EMPLEADOS);

Código 18. Ejemplo de subconsulta con FROM.


TEMA 11. CONSULTAS MULTITABLA Y SUBCONSULTAS
/ 11 MEDAC · Instituto Oficial de Formación Profesional

/ 5. Funciones de agregado: unión e intersección


En muchas ocasiones, es necesario unir, crear intersecciones o verificar la diferencia de datos entre dos tablas que
contengan diferentes registros de unos mismos datos con el fin de crear una única tabla. Para ello, se utilizan las
cláusulas UNION, INTERSECT y MINUS.

UNIÓN INTERSECCIÓN DIFERENCIA

Tabla 3. Representación gráfica de unión, intersect y minus.

Estas cláusulas utilizan dos SELECT para combinar sus resultados. Es fundamental que el orden, tipo y número de
columnas sea el mismo. No se pueden combinar columnas tipo NUMBER con columnas tipo DATE, por ejemplo.
Además, pueden realizarse de forma anidada entre sí.

• Unión: Mediante esta cláusula, se combinan los resultados de dos sentencias SELECT y se eliminan las filas
duplicadas. Estas filas podrían mantenerse si se utiliza el operador UNION ALL.

SELECT NOMBRE, APELLIDOS, DNI FROM CLIENTES


UNION
SELECT NOMBRE, APELLIDOS, DNI FROM SOCIOS;

Código 19. Ejemplo de unión de consultas.

• Intersección: Mediante la cláusula INTERSECT, se analizan las filas de los dos SELECT, devolviendo únicamente
aquellas filas que estén en ambas tablas. Además, las filas duplicadas se eliminan.

SELECT NOMBRE, APELLIDOS, DNI FROM CLIENTES


INTERSECT
SELECT NOMBRE, APELLIDOS, DNI FROM SOCIOS
INTERSECT
SELECT NOMBRE, APELLIDOS, DNI FROM EMPLEADOS;

Código 20. Ejemplo de intersección de consultas.


TEMA 11. CONSULTAS MULTITABLA Y SUBCONSULTAS
Bases de datos / 12

/ 6. Funciones de agregado: diferencias, combinación de


operaciones y ordenación
• Diferencias: Mediante la cláusula MINUS, se obtienen las filas que se encuentran en el primer SELECT, pero no
aparecen en el segundo. Las filas duplicadas, de igual forma, se eliminan.

SELECT FABRICANTE, MODELO FROM MECANICA


WHERE TALLER = 1
MINUS
SELECT FABRICANTE, MODELO FROM MECANICA
WHERE TALLER = 2

Código 21. Ejemplo de diferencia de consultas.

En el ejemplo anterior, se obtendrían los modelos y fabricantes de coches que se encuentran en el taller número 1,
pero no en el número 2.

• Combinación de operaciones: Tal y como se indicó anteriormente, estas operaciones pueden realizarse de
manera anidada, con el fin de realizar consultas de mayor complejidad. Es recomendable usar paréntesis
para evitar problemas y errores que pudieran surgir. En el siguiente ejemplo, se obtendrían los fabricantes y
modelos de coches del taller 1 y 2 que no están en el taller número 3.

(SELECT FABRICANTE, MODELO FROM MECANICA


WHERE TALLER = 1
INTERSECT
SELECT FABRICANTE, MODELO FROM MECANICA
WHERE TALLER = 2)
MINUS
SELECT FABRICANTE, MODELO FROM MECANICA
WHERE TALLER = 3;

Código 22. Ejemplo de combinación de operaciones

• Ordenación de consultas: Es posible ordenar los datos obtenidos a través de las cláusulas UNION, INTERSECT
o MINUS, mediante la cláusula ORDER BY. Debe hacer referencia siempre a la columna del primer SELECT.

SELECT TELEFONO1 FROM EMPLEADOS


UNION
SELECT TELEFONO2 FROM EMPLEADOS
ORDER BY TELEFONO1;

Código 23. Ejemplo de diferencia de consultas

Vídeo 2. “Uso de union, intersect y


minus en oracle express 18c”
https://bit.ly/30M5ULL
TEMA 11. CONSULTAS MULTITABLA Y SUBCONSULTAS
/ 13 MEDAC · Instituto Oficial de Formación Profesional

/ 7. Caso práctico 2: “Subconsultas en Oracle SQL Live”


Planteamiento: Seguiremos practicando con sentencias SQL mediante Oracle SQL Live, poniendo en práctica los
conocimientos que hemos visto a lo largo del tema.

Nudo: Para ello, vamos a utilizar las tablas creadas en el Caso Práctico 1, junto a otras dos nuevas tablas
que crearemos:

EMPLEADOS DEPARTAMENTOS

ID_EMPLEADO ID_DPTO

NOMBRE NOMBRE

APELLIDOS RESPONSABLE DPTO.

TELÉFONO

SALARIO

RESPONSABLE

ID_DPTO

Tabla 4. Ejemplo

El objetivo de la actividad es practicar con las subconsultas estudiadas anteriormente, de manera que se utilicen
varias variantes y cláusulas.

Se debe especificar el objetivo de la consulta y explicar el resultado obtenido.

Desenlace: Una posible consulta puede ser la siguiente, mostrada en el último ejemplo del punto 4.2.:

SELECT DEPARTAMENTO,
FROM EMPLEADOS
GROUP BY DEPARTAMENTO
HAVING AVG(SALARIO) > (SELECT AVG(SALARIO) FROM EMPLEADOS);

Código 24. Ejemplo subconsulta con distintas variantes.

/ 8. Resumen y resolución del caso práctico de la unidad


En este tema, hemos comenzado estudiando la forma de realizar consultas sobre varias tablas. Para ello, hemos
estudiado los conceptos de composiciones internas y composiciones externas. También hemos analizado los tipos
de JOIN que existen en SQL y hemos comprobado cómo se aplican sobre las tablas de una base de datos.

Posteriormente, hemos profundizado en el concepto de subconsulta, analizando los principales tipos de subconsultas
existentes y los usos que se les puede dar en un entorno real de base de datos: subconsultas de varias filas, utilizando
el operador EXIST, utilizando las cláusulas FROM, JOIN o HAVING, etc.
TEMA 11. CONSULTAS MULTITABLA Y SUBCONSULTAS
Bases de datos / 14

Por último, hemos practicado con las cláusulas UNION, INTERSECT y MINUS, que se utilizan habitualmente en bases
de datos para realizar uniones, intersecciones y diferencias entre los datos de diferentes tablas. Además del concepto
de estas cláusulas y de varios ejemplos sobre su uso, también hemos estudiado las operaciones de combinación y
ordenación de datos utilizándolas.

Resolución del caso práctico de la unidad.

Como planteamos inicialmente, ahora que tenemos un diseño bastante avanzado de la base de datos para la tienda
de nuestro amigo, nos traslada una necesidad en la cual podamos ayudarle. Necesita saber, de entre sus clientes,
cuáles han comprado un determinado producto.

También desea saber los nombres y apellidos de sus clientes y empleados, mediante una única consulta a la base de
datos.

• ¿Cómo podríamos ayudarle a conseguir estos datos?

Podríamos ayudarle mediante el uso de las siguientes consultas, vistas en el tema a modo de ejemplos prácticos:

SELECT CLIENTES.Id_cliente, CLIENTES.nombre, fecha_compra


FROM CLIENTES c, VENTAS v
WHERE c.id_cliente = v.id_cliente AND v.producto = ‘PC’
SELECT NOMBRE, APELLIDOS, DNI FROM CLIENTES
INTERSECT
SELECT NOMBRE, APELLIDOS, DNI FROM EMPLEADOS

Código 25. Resolución caso práctico inicial.

/ 9. Bibliografía
Cabrera, G. (2011). Sistemas gestores de bases de datos. Madrid: Paraninfo.
Elmasri, R. y Navathe, S. (2007). Fundamentos de Bases de Datos (5.a. ed.). Madrid: Pearson Addison-Wesley.
López, I., Castellano, M.J. y Ospino, J. (2011). Bases de datos. Madrid: Garceta.
Oppel, A. (2009). Databases: A Beginner’s Guide. Madrid, España: McGraw-Hill.

También podría gustarte