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

Consulta ordenar datos compleja

Estas en el tema de Consulta ordenar datos compleja en el foro de Mysql en Foros del Web. Necesitaba hacer una consulta sql que me devolviera los 5 enlaces con mas visitas de la pagina. Tengo dos tablas: Tabla datos En esta tabla ...
  #1 (permalink)  
Antiguo 04/08/2008, 08:59
Avatar de Aimarejada  
Fecha de Ingreso: abril-2006
Mensajes: 207
Antigüedad: 18 años
Puntos: 0
Consulta ordenar datos compleja

Necesitaba hacer una consulta sql que me devolviera los 5 enlaces con mas visitas de la pagina.

Tengo dos tablas:

Tabla datos

En esta tabla se guardan todo tipo de datos y para saber a que sección de la pagina pertenecen llevan todos el campo id_sección.

Campo id
Campo Nombre
Campo id_seccion
Campo url


Tabla visitas

Aqui se guarda cada visita con un id_dato para saber a quien pertenece y la ip de la visita.

Campo id
Campo id_dato
Campo ip

El problema es a la hora de formular la consulta y decirle que me ordene de mayor a menor los los 5 primeros datos que sean de la sección (id_seccion) ya que en la parte de la tabla visitas no se como especificarle que sean solo las visitas que pertenezcan a datos que sean de la seccion enlace.

Lo intente con esta consulta pero no me da errores asi que supongo que lo que yo quiero hacer sera añadiendo algun campo a la tabla visitas como id_seccion por ejemplo.

Código PHP:
SELECT  count(*) AS total d.nombred.url 
FROM datos 
AS dvisitas AS 
WHERE d
.id_seccion='Numero Seccion' and v.id_dato 'id' 
ORDER BY d.nombre  DESC limit 5 

Última edición por Aimarejada; 05/08/2008 a las 06:04
  #2 (permalink)  
Antiguo 05/08/2008, 02:51
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: Consulta ordenar datos compleja

Código:
SELECT datos.Nombre, datos.url, Count(*) AS Total
   FROM visitas INNER JOIN datos 
       ON visitas.id_dato = datos.id
WHERE datos.id_seccion="id_seccion"
GROUP BY datos.Nombre, datos.url
ORDER BY Count(*) DESC, datos.Nombre limit 5;
No se que campo es v.id_contenido puesto que en la definición de la tabla no esta???

Esta consulta de dará la URL y el nombre de los 5 primeros datos con más visitas de la seccion "id_seccion". Si hay empate los ordenarà por nombre.

Quim
  #3 (permalink)  
Antiguo 05/08/2008, 06:13
Avatar de Aimarejada  
Fecha de Ingreso: abril-2006
Mensajes: 207
Antigüedad: 18 años
Puntos: 0
Respuesta: Consulta ordenar datos compleja

Lo de id_contenido deberia ser id_dato.

He probado la sentencia pero el phpmyadmin me dice que "Invalid use of group function ".
  #4 (permalink)  
Antiguo 05/08/2008, 07:59
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: Consulta ordenar datos compleja

Código:
SELECT * FROM
(SELECT datos.Nombre, datos.url, Count(*) AS Total
   FROM visitas INNER JOIN datos 
       ON visitas.id_dato = datos.id
WHERE datos.id_seccion="id_seccion"
GROUP BY datos.Nombre, datos.url) as Subq
ORDER BY Subq.total DESC, Subq.Nombre limit 5;
Esto funcionará... creo


Quim
  #5 (permalink)  
Antiguo 05/08/2008, 08:30
Avatar de Aimarejada  
Fecha de Ingreso: abril-2006
Mensajes: 207
Antigüedad: 18 años
Puntos: 0
Respuesta: Consulta ordenar datos compleja

Ahora no me da errores y hace la consulta pero no encuentra nada, es decir no muestra resultados apesar de que tengo bastantes visitas guardadas y bastantes enlaces.
  #6 (permalink)  
Antiguo 06/08/2008, 02:12
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: Consulta ordenar datos compleja

¿? No se que puede ser....

estas usando un id_seccion que exista?
el formato del id_seccion es numérico, luego tiene que ir sin comillas ni dobles ni simples?
lo estas usando directamente en el phpmyadmin o via programación, en este segundo caso el id_seccion llegará por una variable, estas seguro que llega el valor...?
Mira si sacando la clausla where te da resultados...?
Tus tablas son innoDB?

Si quires pasame un grupo de datos reales y miro que puede ser....

Quim
  #7 (permalink)  
Antiguo 06/08/2008, 10:02
Avatar de Aimarejada  
Fecha de Ingreso: abril-2006
Mensajes: 207
Antigüedad: 18 años
Puntos: 0
Respuesta: Consulta ordenar datos compleja

El id_seccion existe y he decidido no complicarme la vida y simplificar añadiendo un campo nuevo a la tabla visitas como comente en los anteriores mensajes de que igual era mejor hacerlo asi. Lo estaba probando directamente sobre la bd con el Phpmyadmin.

Gracias de todas formas por ayudarme.

Última edición por Aimarejada; 06/08/2008 a las 14:24
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 09:48.