Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

Consulta con Subconsulta

Estas en el tema de Consulta con Subconsulta en el foro de Mysql en Foros del Web. Hola, paso a explcaros: Tengo una tabla de "Artistas" y otra tabla de "Discos" , lógicamente cada artista tiene varios discos. Quiero hacer una consulta ...
  #1 (permalink)  
Antiguo 25/02/2010, 19:53
 
Fecha de Ingreso: abril-2009
Ubicación: Zaragoza
Mensajes: 50
Antigüedad: 15 años
Puntos: 1
Consulta con Subconsulta

Hola, paso a explcaros:

Tengo una tabla de "Artistas" y otra tabla de "Discos", lógicamente cada artista tiene varios discos.

Quiero hacer una consulta que me saque todos los artistas y solo año y título del disco más reciente que tenga ese artista.

Los campos son estos:
Tabla Artistas: Artistas.Id, Artistas.nombre
Tabla Discos: Discos.Id_Artista, Discos.Ano, Discos.Album


Quiero un resultado asi:
LINKIN PARK | Minutes To Midnight | 2007
RAMMSTEIN | Liebe ta ta ta | 2009


Supongo será con alguna subconsulta, pero de momento .. no me sale.

¿Serían tan amables? Gracias.
  #2 (permalink)  
Antiguo 25/02/2010, 21:30
 
Fecha de Ingreso: enero-2010
Ubicación: Estelí, Nicaragua
Mensajes: 157
Antigüedad: 14 años, 3 meses
Puntos: 8
Respuesta: Consulta con Subconsulta

En primer lugar la consulta que regresa el disco actual seria la siguiente, dado que te muestra
el año mas reciente por artista.
Código MySQL:
Ver original
  1. SELECT Id_Artista,max(Ano) as anno,Album FROM Discos group by Id_Artista

Luego simplemente unes el resultado de esta consulta con la primera tabla.

Código MySQL:
Ver original
  1. SELECT id,nombre,anno,album from Artistas tb1 inner join
  2. (SELECT Id_Artista,max(Ano) as anno,Album FROM Discos group by Id_Artista) tb2
  3. on tb1.id=tb2.Id_Artista

Espero te sirva

Última edición por LENINCASCO; 26/02/2010 a las 07:30
  #3 (permalink)  
Antiguo 28/02/2010, 18:33
 
Fecha de Ingreso: abril-2009
Ubicación: Zaragoza
Mensajes: 50
Antigüedad: 15 años
Puntos: 1
Respuesta: Consulta con Subconsulta

Gracias Lenincasco, la solución es estupenda .. pero no me funciona del todo, me aparece "Ha intentado ejecutar una consulta que no incluye la expresión especificada "Album"como parte de una función de agregado", Curiosamente si le quito "Album" tanto de la consulta como de la subconsulta me aparece "Grupo y año de edición de su disco más reciente", pero si le añado además el album ... me salta el error.

¿A qué es debido?

Gracias.
  #4 (permalink)  
Antiguo 28/02/2010, 19:01
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Consulta con Subconsulta

Eso no suele ser un error en MySQL.
La mayor parte de los DBMS exigen que una cláusula GROUP BY contenga la totalidad de los campos no incluidos en una función de agregación, pero no MySQL, el cual puede agrupar incluso sobre campos no invocados en el SELECT.
¿Estás usando realmente MySQL en este caso o estas haciendo las pruebas en otro DBMS?
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #5 (permalink)  
Antiguo 28/02/2010, 20:07
 
Fecha de Ingreso: abril-2009
Ubicación: Zaragoza
Mensajes: 50
Antigüedad: 15 años
Puntos: 1
Respuesta: Consulta con Subconsulta

Hellow gnzsoloyo, ya lo he probado y va genial .. estaba utilizando Access, pero lo he probado en un cliente mysql y va genial.

Estupenda solución, gracias a todos.
  #6 (permalink)  
Antiguo 28/02/2010, 21:56
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Consulta con Subconsulta

Para otra ocasión ya sabes: No todo es portable entre DBMSs. Hay cosas que sólo funcionan bien en su propio motor.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Etiquetas: subconsulta
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 12:57.