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

Consulta select para hacer un ranking

Estas en el tema de Consulta select para hacer un ranking en el foro de Mysql en Foros del Web. hola amigos les cuento q estoy haciendo un sistema de votacion de imagenes con php y mysql mis tablas de BD son: ARTISTA |id_artista|nombre_artista|curso_artista|colegio_a rtista ...
  #1 (permalink)  
Antiguo 26/07/2010, 15:56
 
Fecha de Ingreso: diciembre-2007
Mensajes: 385
Antigüedad: 16 años, 11 meses
Puntos: 0
Consulta select para hacer un ranking

hola amigos les cuento q estoy haciendo un sistema de votacion de imagenes con php y mysql mis tablas de BD son:

ARTISTA
|id_artista|nombre_artista|curso_artista|colegio_a rtista


PINTURAS
id_pintura|_id_artista|pintura_nombre|pintura_url

USUARIO
id_usuario|nombre_usuario|etc...

VOTACION
|id_usuario||id_pintura|voto

esas son mis tablas y sus campos y lo q necesito es realizar una consulta q me entregue las 5 pinturas mas votadas para mostrarlas junto al nombre, curso y colegio del artista..... como puedo hacer esta consulta amigos??? porfavor agradeceria mucho su ayuda.... de antemano gracias...
  #2 (permalink)  
Antiguo 26/07/2010, 20:17
Avatar de lair  
Fecha de Ingreso: enero-2009
Ubicación: header('Location: Morelia");
Mensajes: 1.052
Antigüedad: 15 años, 10 meses
Puntos: 46
Respuesta: Consulta select para hacer un ranking

Hola.

prueba con algo como esto:
Código MySQL:
Ver original
  1.     count(pinturas.voto) as votos,
  2.     pinturas.*,
  3.     artista.*
  4.     pinturas,
  5.     artistas
  6.     pinturas._id_artista=artista.id_artista
  7. order by votos

suerte.
  #3 (permalink)  
Antiguo 27/07/2010, 06:32
 
Fecha de Ingreso: diciembre-2007
Mensajes: 385
Antigüedad: 16 años, 11 meses
Puntos: 0
Respuesta: Consulta select para hacer un ranking

Hola lair gracias por tu ayuda, sabes lo probe asi:
Código:
SELECT count(votacion.voto) as votos,

 votacion.*, pinturas.*, artista.* FROM pinturas, artista

where pinturas.id_artista= artista.id_artista and pinturas.id_pintura= 
votacion.id_pintura

ORDER BY votos 
LIMIT 5
y me sale el error:
"Error Code: 1051
Unknown table 'votacion' " y no entiendo pq, si la tabla votacion la tengo y tb la estoy llamando y comparando con la tabla pinturas.... de verdad no entiendo pq me lanza ese error ... estoy contra ell tiempo y no se pq esta fallando esa consulta, porfavor amigos rogaria y agradeceria mucho su ayuda!!!!.... de antemano gracias.
  #4 (permalink)  
Antiguo 27/07/2010, 06:34
Avatar de Vun
Vun
Colaborador
 
Fecha de Ingreso: agosto-2009
Ubicación: Benalmádena, España
Mensajes: 2.265
Antigüedad: 15 años, 3 meses
Puntos: 150
Respuesta: Consulta select para hacer un ranking

A ver si es que tienes votación (con tilde) como nombre... o Votacion (primera en mayuscula)...
  #5 (permalink)  
Antiguo 27/07/2010, 06:42
 
Fecha de Ingreso: diciembre-2007
Mensajes: 385
Antigüedad: 16 años, 11 meses
Puntos: 0
Respuesta: Consulta select para hacer un ranking

Hola, no si la tengo asi tal cual, votacion, pero me lanza ese error.... y no le encuentro la logica de pq me lanza ese error de verdad q no entiendo.... porfavor alguien q me pueda guiar porfavor se lo agradeceria mucho!!!!!.... de antemano gracias.
  #6 (permalink)  
Antiguo 27/07/2010, 08:15
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 7 meses
Puntos: 300
Respuesta: Consulta select para hacer un ranking

Te faltaba seleccionar la tabla votacion. Hazlo mejor con INNER JOIN

SELECT count(votacion.voto) as votos, votacion.*, pinturas.*, artista.* FROM artista INNER JOIN pinturas ON pinturas.id_artista= artista.id_artista INNER JOIN votacion ON pinturas.id_pintura= votacion.id_pintura ORDER BY votos LIMIT 5

Esta consulta tiene un inconveniente que puede resolverse, si varias pinturas reciben los mismos votos y están entre las 5 primeras, sólo te mostrará una de ellas. Si quieres solución, te la proporcionaremos.
  #7 (permalink)  
Antiguo 27/07/2010, 08:30
 
Fecha de Ingreso: diciembre-2007
Mensajes: 385
Antigüedad: 16 años, 11 meses
Puntos: 0
Respuesta: Consulta select para hacer un ranking

hola jurena, si justamente se me presento ese problema es decir, me cuenta los votos, pero no para cada foto sino q me cuenta todos los votos para y me muestra solamente una foto, probe con esta consulta:
Código:
SELECT count(votacion.VOTO) as votos,

 votacion.*, pinturas.*, artista.* FROM pinturas, artista, votacion

where pinturas.ID_ARTISTA= artista.ID_ARTISTA and pinturas.ID_PINTURA= VOTACION.ID_PINTURA

ORDER BY votos DESC
LIMIT 5
y con la tuya tb:
Código:
SELECT count(votacion.voto) as votos, votacion.*, pinturas.*, artista.* FROM artista INNER JOIN pinturas ON pinturas.id_artista= artista.id_artista INNER JOIN votacion ON pinturas.id_pintura= votacion.id_pintura ORDER BY votos LIMIT 5
y justamente me da el mismo problema, me cuenta los votos pero todos para una sola imagen y no como deberia ser mostrando los votos para cada foto.... como o q deberia modificar en mi consulta para solucionar este problema y haqcer q me muestre cada foto con su cantidad de votos correspondientes???..... porfavor amigos agradeceria su ayuda.... de antemano gracias.
  #8 (permalink)  
Antiguo 27/07/2010, 09:08
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 7 meses
Puntos: 300
Respuesta: Consulta select para hacer un ranking

agrupando por id_pintura

SELECT count(votacion.voto) as votos, pinturas.id_pintura, artista.id_artista FROM artista INNER JOIN pinturas ON pinturas.id_artista= artista.id_artista INNER JOIN votacion ON pinturas.id_pintura= votacion.id_pintura group by pinturas.id_pintura ORDER BY votos LIMIT 5
  #9 (permalink)  
Antiguo 27/07/2010, 09:41
 
Fecha de Ingreso: diciembre-2007
Mensajes: 385
Antigüedad: 16 años, 11 meses
Puntos: 0
Respuesta: Consulta select para hacer un ranking

muchas gracias amigos, finalmente me resulto la consulta como la queria gracias a su ayuda, gracias de verdad, si tengo alguna duda sobre el mismo hilo, volvere a plantearlo de todas formas, gracias por todo.

Etiquetas: ranking, select
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 08:05.