Página 1 de 1

Agrupaciones y sumas de resultados

Publicado: 25 Mar 2012, 15:18
por yomiento
Hola estoy preparando un sistema de votaciones para un concurso de fotos y tengo un problema a la hora de sumar los botos.
Estoy permitiendo que cada usuario vote todos los días tantas veces como quiera, guardo el usuario que vota, a que foto y que día.
Mi problema es si quiero que cuente sólo un voto por persona y día.
La sentencia que estoy usando es:

SELECT id, usuario, foto, fecha, COUNT(id) GROUP BY foto ORDER BY COUNT(id) DESC

De esta forma consigo el listado de todas las fotos con los votos que tiene cada una. Pero lo que me gustaría es que me sumara sólo un voto por día y por usuario en cada foto.

¿Alguien me puede ayudar?
Un millón de gracias

Re: Agrupaciones y sumas de resultados

Publicado: 10 Abr 2012, 21:38
por Rainwod
Puedes explicarte mejor??? Tengo una idea de lo que quieres lograr pero tavía no llevo bien claro.

Re: Agrupaciones y sumas de resultados

Publicado: 10 Abr 2012, 21:53
por karbiko
¿¿No tendrías que usar el DISTINCT id, para que solo cogiera un voto de cada usuario???

Re: Agrupaciones y sumas de resultados

Publicado: 10 Abr 2012, 21:56
por Rainwod
karbiko escribió:¿¿No tendrías que usar el DISTINCT id, para que solo cogiera un voto de cada usuario???
Puedes explicarme como es que funciona DISTINCT id, porque me parece que voy a necesitarlo para unos arreglos que estoy haciendo.Gracias :ok:

Re: Agrupaciones y sumas de resultados

Publicado: 10 Abr 2012, 22:07
por karbiko
Mirad estos enlaces sobre el uso de la función SELECT DISTINCT y del uso de ésta conjuntamente con SELECT COUNT..

Re: Agrupaciones y sumas de resultados

Publicado: 11 Abr 2012, 12:28
por Rainwod
Ufff karbiko no puedo acceder a estos enlaces, me harías el favor de postear la documentación??? Si no es molestia. :cry: :cry:

Re: Agrupaciones y sumas de resultados

Publicado: 11 Abr 2012, 19:40
por karbiko
Son los primeros enlaces que aparecen en google si buscas distinct...


palabra clave SELECT nos permite tomar toda la información de una columna (o columnas) en una tabla. Esto, obviamente, significa necesariamente que habrá redundancias. ¿Qué sucedería si sólo deseamos seleccionar cada elemento DISTINCT? Esto es fácil de realizar en SQL. Todo lo que necesitamos hacer es agregar DISTINCT luego de SELECT. La sintaxis es la siguiente:

SELECT DISTINCT "nombre_columna"
FROM "nombre_tabla"

Por ejemplo, para seleccionar todos los negocios distintos en la Tabla Store_Information,

Tabla Store_Information
store_name Sales Date
Los Angeles 1500 € 05-Jan-1999
San Diego 250 € 07-Jan-1999
Los Angeles 300 € 08-Jan-1999
Boston 700 € 08-Jan-1999

Ingresamos,

SELECT DISTINCT store_name FROM Store_Information

Resultado:

store_name
Los Angeles
San Diego
Boston


Como ves, solo nos muestra los distintos... Si hay uno repetido, lo desecha.
En el caso de yomiento, si alguien ha votado dos veces, sólo cuenta un voto..... ahora, será el primer voto que encuentre o el último... ???
Supongo que habrá que por una columna time y que coja el que elijas según ese orden que le das...

Eso si que no llego a saberlo.... al menos aún....

Re: Agrupaciones y sumas de resultados

Publicado: 12 Abr 2012, 13:17
por Rainwod
Bestial men me ha servido, y por lo que veo lo puedo emplear en lo que estoy haciendo.... Ahora te explico, yo estoy haciendo una "modificación" por así decirlo, que me muestre las últimas respuestas a los temas y ya logro que me las ponga pero me incluye también los últimos temas, por lo que acabas de explicar esto lo puedo incluir en el code que me recupera todas las respuestas y temas nuevos. Como podré hacer para desechar solo los temas???