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.