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

Sistema de Votos

Estas en el tema de Sistema de Votos en el foro de Mysql en Foros del Web. Hola amig@s, Estoy creando un sistema de votos, nunca he hecho uno y no se si lo estoy haciendo bien con las tablas. Actualmente tengo ...
  #1 (permalink)  
Antiguo 17/11/2015, 10:10
Avatar de Benderzuelo  
Fecha de Ingreso: mayo-2013
Ubicación: España
Mensajes: 223
Antigüedad: 11 años
Puntos: 5
Mensaje Sistema de Votos

Hola amig@s,

Estoy creando un sistema de votos, nunca he hecho uno y no se si lo estoy haciendo bien con las tablas.
Actualmente tengo esto:

idVoto
ipVotante
idModelo
valorVoto
time

Lo que estoy haciendo es que almaceno la IP de la persona y cl time, y no le dejo votar nada más que una vez cada 24horas

Ahora lo que quiero es hacer una consulta en la que me devuelva el o la modelo más votad@, y no se como hacer la consulta en una sola consulta.

Me podéis ayudar?

Muchas gracias.
  #2 (permalink)  
Antiguo 18/11/2015, 08:46
Avatar de paula23andrea  
Fecha de Ingreso: noviembre-2012
Mensajes: 38
Antigüedad: 11 años, 5 meses
Puntos: 1
Respuesta: Sistema de Votos

Deberías ser un poco más específico sobre la tabla..
Podrías hacer un count, pero no entiendo bien qué es el campo "valor voto" ya que asumo que cada registro de esa tabla representa un voto, y el id del modelo debería ser por quién votó el votante.
__________________
Suerte!!
  #3 (permalink)  
Antiguo 18/11/2015, 09:04
Avatar de Benderzuelo  
Fecha de Ingreso: mayo-2013
Ubicación: España
Mensajes: 223
Antigüedad: 11 años
Puntos: 5
Respuesta: Sistema de Votos

el campo valorVoto es el valor del voto, que es desde 1 hasta 5 puntos.

El problema que tengo es... de que manera pido en la consulta la idModelo de la modelo que más puntos tenga?, o debería hacer varias consultas?, yo en varias consultas me puedo apañar pero queria saber si se puede hacer tan solo con una consulta
  #4 (permalink)  
Antiguo 18/11/2015, 09:15
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Sistema de Votos

se puede hacer en una sola consulta, algo como esto:

Código SQL:
Ver original
  1. SELECT MAX(total),modelo FROM(
  2. SELECT COUNT(*) AS total, modelo FROM tabla GROUP BY modelo)
  3. AS t1
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #5 (permalink)  
Antiguo 20/11/2015, 02:29
Avatar de Benderzuelo  
Fecha de Ingreso: mayo-2013
Ubicación: España
Mensajes: 223
Antigüedad: 11 años
Puntos: 5
Mensaje Respuesta: Sistema de Votos

Cita:
Iniciado por Libras Ver Mensaje
se puede hacer en una sola consulta, algo como esto:

Código SQL:
Ver original
  1. SELECT MAX(total),modelo FROM(
  2. SELECT COUNT(*) AS total, modelo FROM tabla GROUP BY modelo)
  3. AS t1
Muchas gracias, con ese ejemplo he conseguido hacer esto :

Código MySQL:
Ver original
  1. SELECT MAX(total), TRUNCATE((totalVotos/total), 1), idModelo AS modeloMasVotada FROM ( SELECT COUNT(*) AS total, SUM(valorVoto) AS totalVotos, idModelo FROM votos GROUP BY idModelo ) AS t1 WHERE idModelo IN (SELECT idAnuncio FROM anuncios WHERE tipoAnunciante = 1)

pero quería preguntarte 2 cosas, la primera y a que este tipo de consulta es relativamente nueva para mi, el final de la consulta " AS t1" que se supone que es t1?

y la segunda es..., en la consulta que he hecho, me devuelve el total, la media de voto, y la id de la modelo, y yo lo que quiero es extraer los datos relacionados con esa id... ¿Sería posible hacer que en la misma consulta... que me devuelva los datos, pero en una sola consulta?, esto ya es a modo aprendizaje personal, ya que poco me cuesta hacer una segunda una segunda consulta.

La segunda consulta sería algo así

Código MySQL:
Ver original
  1. SELECT * FROM modelos WHERE idModelo = modeloMasVotada
  #6 (permalink)  
Antiguo 20/11/2015, 09:53
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Sistema de Votos

T1 es un alias de la tabla, que es esto, como se esta haciendo un subquery y se quiere consultar un campo generado en la primer consulta se ocupa un alias, para tu segunda pregunta no entiendo la misma...
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #7 (permalink)  
Antiguo 23/11/2015, 09:39
Avatar de Benderzuelo  
Fecha de Ingreso: mayo-2013
Ubicación: España
Mensajes: 223
Antigüedad: 11 años
Puntos: 5
Respuesta: Sistema de Votos

Si, se lo que es un Alias, pero como no lo usamos en la consulta por eso no lo entiendo.

Por otro lado, me explico mejor,

la consulta que puse, me devuelve el total, la media de voto, y la id de la modelo, los datos de la modelo, como por ejemplo el nombre, la edad, etc... los tengo que mostrar y estan en otra tabla diferente a las de la consulta, y la pregunta es si sería posible pedir esos datos desde esta misma consulta de alguna manera y no tener que hacer 2 consultas..

Muchas garcias
  #8 (permalink)  
Antiguo 23/11/2015, 10:07
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, 5 meses
Puntos: 2658
Respuesta: Sistema de Votos

Cita:
pero como no lo usamos en la consulta por eso no lo entiendo.
En todos los DBMS (Oracle, SQL Server, DB2; PostgreSQL, MySQL), toda tabla derivada debe tener alias.
Es obligatorio.

Tabla derivada: Se dice de la tabla resultado de una subconsulta que se incluye en el FROM de una consulta mayor.
Código MySQL:
Ver original
  1. SELECT a, b, c, d
  2. FROM (SELECT a, b, c, d FROM tablaX ) T1 --- <<<Esto es una tabla derivada
  3. WHERE ...

Ante dudas de ese tipo se sugiere leer los manuales.
__________________
¿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: sql, votos
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 13:56.