Ver Mensaje Individual
  #2 (permalink)  
Antiguo 02/01/2013, 05:40
quimfv
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 8 meses
Puntos: 574
Respuesta: Obtener la suma más alta cumpliendo varias condiciones a la vez

Deberias aclarar como registras dos votos del mismo votante en el mismo dia, eso usando un DATETIME permitiria obtener el ultimo voto ....

Primero obtenemos el ultima fecha (habria que mejorar lo de la hora) para cada votante y foto

Código MySQL:
Ver original
  1. SELECT t.idVotante,t.idFoto,max(t.dateFecha_voto) as fechaMax
  2. FROM tblVotos_fotos t
  3. GROUP BY t.idVotante,t.idFoto

Usando la anterior obtenemos los votos a considerar (con lo que cumpliremos la segunda condición)

Código MySQL:
Ver original
  1. SELECT v.id,v.idFoto,v.idVotante,v.idDueno_foto,v.intVoto
  2. FROM tblVotos_fotos v INNER JOIN
  3. (SELECT t.idVotante,t.idFoto,max(t.dateFecha_voto) as fechaMax
  4. FROM tblVotos_fotos t
  5. GROUP BY t.idVotante,t.idFoto) as Sbc
  6. ON v.idFoto=Sbc.idFoto
  7.    and v.idVotante=Sbc.idVotante
  8.    and v.dateFecha_voto=Sbc.fechaMax

Ahora ya solo falta sumar y filtrar modificando la anterior (para cumplir la primera condición)

Código MySQL:
Ver original
  1. SELECT v.idFoto,SUM(v.intVoto) as votos
  2. FROM tblVotos_fotos v INNER JOIN
  3. (SELECT t.idVotante,t.idFoto,max(t.dateFecha_voto) as fechaMax
  4. FROM tblVotos_fotos t
  5. GROUP BY t.idVotante,t.idFoto) as Sbc
  6. ON v.idFoto=Sbc.idFoto
  7.    and v.idVotante=Sbc.idVotante
  8.    and v.dateFecha_voto=Sbc.fechaMax
  9. WHERE v.idDueno_foto=58
  10. GROUP BY v.idFoto
Si ahora ordenamos y elegimos la primera ya lo tendremos ....("idFoto" con la mayor cantidad de votos)

Código MySQL:
Ver original
  1. SELECT v.idFoto,SUM(v.intVoto) as votos
  2. FROM tblVotos_fotos v INNER JOIN
  3. (SELECT t.idVotante,t.idFoto,max(t.dateFecha_voto) as fechaMax
  4. FROM tblVotos_fotos t
  5. GROUP BY t.idVotante,t.idFoto) as Sbc
  6. ON v.idFoto=Sbc.idFoto
  7.    and v.idVotante=Sbc.idVotante
  8.    and v.dateFecha_voto=Sbc.fechaMax
  9. WHERE v.idDueno_foto=58
  10. GROUP BY v.idFoto

Solo tienes que ejecutar la última, las anteriores son para que se vea el proceso seguido para llegar al resultado.
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.

Última edición por quimfv; 02/01/2013 a las 06:01