Problema con MySql que no se si tiene solucion...

Pakelo
04 de Enero del 2005
Saludos,

Estoy haciendo una aplicación de encuestas en php y mysql, cada vez que alguien vota, hago una inserción en la tabla VOTOS ... en la que introduzo un id_voto autonumerico, la ip del usuario que vota, fecha y demas... el problema viene cuando tengo que contabilizar los votos ya que tengo que hacer una consulta en la que hago una "select id_opcion, texto, count(id_voto) where id_encuesta='$id' group by id_opcion"
y las opciones que no han sido votadas pues no salen en el resultado es decir que al estar el count(id_voto) solo hay resultados de las que tienen votos... y al mostrar el resultado de la encuesta dichas opciones se quedan en blanco...
Alguien sabe si hay opciones en sql para solventar esto??? sin tener que cambiar el diseño de la bd... Gracias de antemano

raszagar
04 de Enero del 2005
El problema es que en la base de dato solo guardas los votos (las opciones no votadas no tienen ninguna fila) entonces el query no te va a devolver resultados de opciones que no sabe que existen (porque no tiene ninguna fila de voto).

Por tanto lo que puedes hacer es obtener la cuenta como hacias antes y luego obtener las opciones que tienes en dicha encuesta (que supongo que guardaras en otra tabla donde esten las preguntas) y de las que no hay votos (las que no salen en el query anterior) imprimirlas y poner 0.

Puedes obtener las opciones no votadas con un query como este...

SELECT DISTINCT id_opcion FROM tabla_opciones WHERE id_encuesta= $id AND id_opcion NOT IN (SELECT DISTINCT id_opcion FORM tabla_votos WHERE id_encuesta = $id)

agoraquimica
04 de Enero del 2005
Puedes intentar la siguiente forma. Te evitará tocar código:

SELECT id_opcion, count(votos) FROM tabla_preguntas_encuesta LEFT OUTER JOIN tabla_votos ON id_encuesta= $id



AQ
----------------------------------------------------------------------
www.Foroquimica.com. Hosting desde 5.95€/año
www.E-proyectos.com Freelances al mejor precio.
----------------------------------------------------------------------