sábado, 10 de noviembre de 2012

Ejercicio conocidos

Partiendo de una base de datos con solo dos tablas, obtener la siguiente información:


  • Nombres de conocidos a los que les guste el fútbol.
  • Aficiones del amigo numero 1.
  • Aficiones de Pepe.
  • Numero de amigos.
  • Numero de aficiones distintas.
  • Numero de amigos por afición.
  • Amigos y número de aficiones que tiene cada uno.
  • Amigos a los que les guste cualquier modalidad de fútbol (fútbol, fútbol sala, futbito, futbolín, etc).
  • Amigos a los que no les guste el fútbol.
  • Amigos a los que les guste el fútbol y el tenis.



Se trata de una base de datos de conocidos, que consta de dos tablas, una de conocidos y otra de aficiones.

Por ahora no se aplicarán ni campos clave, ni índices.

Descripción de las tablas.

Descripción de la tabla conocidos:



Descripción de la tabla aficiones:





Contenido de las tablas.

Contenido de la tabla conocidos.




Contenido de la tabla aficiones.





Consultas a realizar a la base de datos.

Nombres de conocidos a los que les guste el fútbol.

En esta consulta solo se nos piden datos de la tabla conocidos, por lo que tenemos dos opciones para obtener ese dato.

Mediante un JOIN.



Mediante una SUBCONSULTA.





Aficiones del amigo numero 1.

En la tabla aficiones, se encuentra tanto el id, como la afición, por lo que para obtener esta información es suficiente con un consulta a la base de datos aficiones, filtrando el id = 1.





Aficiones de Pepe

En este caso a diferencia de la consulta anterior, la información que queremos obtener (la afición) y el dato por el que queremos filtrar ("Pepe") están en tablas distintas.

Al igual que en el caso de los conocidos a los que les gusta el fútbol  solo se piden datos de una tabla, por lo que se vuelven a presentar dos posibilidades para obtener la información, ya sea mediante una subconsulta o un Join.

Mediante un JOIN.



Mediante una SUBCONSULTA.




Numero de amigos

En realidad lo que se pide es contar cuantas filas tiene la tabla conocidos.

En este caso se usará una función de agregado, pero sin utilizar Group By.




Numero de aficiones distintas

Similar a la consulta anterior, pero en este caso lo que se pide en realidad es contar cuantas filas distintas hay en la tabla, por lo que se añadirá el modificador DISTINCT



Numero de amigos por afición

Similar a las anteriores, pero en este caso se pide información para cada afición, por lo que habrá que realizar grupos de filas (registros), utilizando para ellos GROUP BY.



Amigos y número de aficiones que tiene cada uno.

En este caso nos piden también información agrupada, pero que proviene de varias tablas, por lo que será preciso utilizar un join.



Amigos a los que les guste cualquier modalidad de fútbol (fútbol, fútbol sala, futbito, futbolín, etc).

Nuevamente se pide información proveniente de una tabla filtrandolos por los datos de otra tabla.

En este caso se filtrará mediante el operador LIKE.

Mediante un JOIN.




Mediante una SUBCONSULTA.




Amigos a los que no les guste el fútbol.

Para obtener este tipo de consultas, es suficiente con añadir el operador NOT a una consulta que muestre los datos que no se desean.



Amigos a los que les guste el fútbol y el tenis.

Una posible solución, es filtrar a los amigos que tengan una de las aficiones (en este caso tenis), y usar otra consulta para reducir más los resultados, seleccionando los que tienen como afición futbol, pero solo entre los que también tiene tenis.



No hay comentarios:

Publicar un comentario