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

consulta anidada no sale ordenada

Estas en el tema de consulta anidada no sale ordenada en el foro de Bases de Datos General en Foros del Web. Hola amigos, estoy intentando hacer una consulta anidada que me devuelva las 5 noticias com más comentarios, tengo dos tablas una con noticias y otra ...
  #1 (permalink)  
Antiguo 07/02/2009, 10:33
 
Fecha de Ingreso: enero-2009
Mensajes: 12
Antigüedad: 15 años, 10 meses
Puntos: 1
consulta anidada no sale ordenada

Hola amigos, estoy intentando hacer una consulta anidada que me devuelva las 5 noticias com más comentarios, tengo dos tablas una con noticias y otra con comentarios, ahora os explico lo que he hecho:

Cuando lanzo la siguiente consulta:
"SELECT id FROM comentarios GROUP BY id ORDER BY count( * ) DESC"
me devuelve por ejemplo :
5
7
1
2
donde cada número es un id de una noticia, devuelve los id de forma ordenda de mayor a menor según la cantidad de comentarios que tenga cada noticia. Hasta aquí bien pero si ahora hago la consutla:
"SELECT id FROM noticias WHERE id IN (SELECT id FROM comentarios GROUP BY id ORDER BY count( * ) DESC) Limit 0,5". Esta consulta devuelve las noticias:
1
2
5
7


Ahora os pregunto, ¿por qué la consulta anidada no me devuelve las noticias ordenadas por la primera consulta? Es decir,
5, 7, 1, 2 en vez de 1,2,5,7


Espero que entendais lo que aquí os expongo. Si tenéis alguna idea os agradecería que me lo comentarais

gracias.
  #2 (permalink)  
Antiguo 07/02/2009, 11:09
Avatar de Fann_Lavigne  
Fecha de Ingreso: diciembre-2004
Mensajes: 622
Antigüedad: 19 años, 11 meses
Puntos: 12
Respuesta: consulta anidada no sale ordenada

Lo que pasa es que el Order By solo esta en la consulta interna, la consulta externa esta sin order by, lo que te recomiendo es obtener la cantidad de coments y hacer un inner join de tu tabla nociticias con el select que obtiene la cantidad de comentarios. es decir:

Select id, Qty
From Nociticias Inner Join (select id, count(*) As Qty From coments group by id) As NoComents
On Noticias.ID = NoComents.Id
Order By Qty DEsc
__________________
"Entre Mas Brillante Es Una Mente, Tiene Que Luchar Contra Demonios Internos Mas Poderosos"
[email protected]
  #3 (permalink)  
Antiguo 08/02/2009, 04:40
 
Fecha de Ingreso: enero-2009
Mensajes: 12
Antigüedad: 15 años, 10 meses
Puntos: 1
Respuesta: consulta anidada no sale ordenada

Hola Fann_Lavigne, he probado la consulta que me propones y me funcionó correctamente .

Yo no controlo mucho esto de los inner join por lo que no se me ocurrió antes, voy a leerme un manual sobre este tema para la próxima vez.


Muchas gracias.
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 23:03.