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

Count omite registros que no cumplen condicion?

Estas en el tema de Count omite registros que no cumplen condicion? en el foro de Mysql en Foros del Web. Estimados tengo el siguiente problema que aun no he podido resolver,.. me he dado infinitas vueltas por la red y no puedo sacarlo. El problema ...
  #1 (permalink)  
Antiguo 27/03/2008, 11:29
 
Fecha de Ingreso: marzo-2008
Mensajes: 1
Antigüedad: 16 años
Puntos: 0
Count omite registros que no cumplen condicion?

Estimados tengo el siguiente problema que aun no he podido resolver,.. me he dado infinitas vueltas por la red y no puedo sacarlo. El problema es el siguiente Tengo una tabla con respuestas a preguntas que estan en otra tabla, y quiero saber cuantas respuestas negativas tiene cada pregunta ( negativa implica respuesta< 2), la consulta solo me muestra las cuentas que contienen menores que dos pero no considera las otras preguntas, es decir me muestra lo siguiente

pregunta negativas
p1 5
p2 2
p4 4
p5 3

no me muestra p3 pues p3 no tiene respuestas negativas, pero en ese caso deberia mostrarme
p3 0
y no lo hace….. ayuda porfavor


select pregunta, count(respuesta) from respuesta INNER JOIN pregunta USING (pregunta) where respuesta < 2 group by IDpregunta
  #2 (permalink)  
Antiguo 30/03/2008, 08:10
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años
Puntos: 300
Re: Count omite registros que no cumplen condicion?

El problema más importante es que utilizas INNER JOIN; deberias utilizar LEFT JOIN o RIGHT JOIN, según el orden en que sitúes las tablas en la consulta.
Prueba esta consulta (no sé cómo has llamado al campo en respuesta que pone en relación con el idpregunta de pregunta. Yo lo he llamado refidpregunta).

SELECT p.pregunta, count(r.respuesta) AS total FROM pregunta p LEFT JOIN respuesta r ON p.IDpregunta=r.refidpregunta GROUP BY p.IDpregunta HAVING total < 2

Suerte

Última edición por jurena; 30/03/2008 a las 08:35 Razón: cambio a LEFT JOIN desde RIGHT JOIN
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 00:10.