SQL - Subconsultas con varias tablas

 
Vista:
sin imagen de perfil

Subconsultas con varias tablas

Publicado por Miriam (1 intervención) el 04/11/2016 17:34:00
Hola,

Estoy empezando con SQL y estoy haciendo ejercicios de consulta para asimilar los conceptos. Tengo una base de datos con 6 tablas:
Tablas-practica-01

En un ejercicio me piden:
Presenta un listado de los locales registrados en la base de datos donde se muestre el nombre, la asistencia media a los conciertos que allí se han realizado y cual es el máximo número de asistentes a un concierto.

Y mi código de la consulta ha sido:
SELECT l.nombre AS local, AVG(asistentes) AS asistentes, MAX(asistentes) AS maximo
FROM local as l inner join interpretar as i on l.ID = i.local_ID
GROUP BY local_ID


En el siguiente ejercicio me dicen:
Modifica la consulta anterior con tal de mostrar el nombre del grupo correspondiente al concierto que ha tenido la máxima asistencia.

De primeras había puesto:
SELECT l.nombre AS local, AVG(asistentes) AS asistentes, MAX(asistentes) AS maximo, g.nombre as 'nombre del grupo'
FROM local as l inner join interpretar as i on l.ID = i.local_ID inner join grupo as g on g.ID = i.grupo_ID
GROUP BY local_ID

En efecto me añade una columna con el nombre de los grupos, pero no son los grupos que han tenido la máxima asistencia.
Entiendo que tengo que hacer una subconsulta, pero no utilizo bien la sintaxis ya que la consola siempre me da error. De hecho creo que estoy planteando mal la consulta.

Mi planteamiento es utilizar la consulta del ejercicio anterior como subconsulta y como consulta principal que me extraiga el nombre de los grupos. Es decir:
CONSULTA PRINCIPAL: ¿qué grupos ...
SUBCONSULTA: cumplen que han obtenido la máxima asistencia?

A la hora de escribir el código de la consulta no consigo hacerlo bien, tengo:

SELECT g.nom as 'nombre del grupo'
FROM grupo as g inner join interpretar as i on i.grupo_ID = g.ID
WHERE
(
SELECT l.nombre AS local, AVG(asistentes) AS asistentes, MAX(asistentes) AS maximo
FROM local as l inner join interpretar as i on l.ID = i.local_ID inner join grupo as g on g.ID = i.grupo_ID
GROUP BY local_ID
)

Y la consola me da error:
Error de SQL (1241): Operand should contain 1 column(s)


¿Alguien me puede ayudar a sacar el código explicándome cómo se hace correctamente?

Gracias de antemano.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder