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

COUNT() me suma 1 registro de mas por tabla

Estas en el tema de COUNT() me suma 1 registro de mas por tabla en el foro de Mysql en Foros del Web. Hola, tengo una tabla con poblaciones (t4_poblaciones) y otras dos con datos relacionados con esa poblacion (t1_casas y t2_pisos). El caso es que me interesa ...
  #1 (permalink)  
Antiguo 14/01/2007, 11:21
 
Fecha de Ingreso: enero-2004
Mensajes: 207
Antigüedad: 20 años, 3 meses
Puntos: 1
COUNT() me suma 1 registro de mas por tabla

Hola,

tengo una tabla con poblaciones (t4_poblaciones) y otras dos con datos relacionados con esa poblacion (t1_casas y t2_pisos). El caso es que me interesa crear una lista con el nombre de las poblaciones (t4_poblacion) que tienen casas y pisos y que me sumen el total. Para ello hago la siguiente consulta:

Cita:
strSQL = "SELECT t4_poblacion, COUNT(t4_poblacion) AS suma FROM t4_poblaciones, t2_pisos, t1_casas WHERE t4_idprovincia=" & provincia & " AND ( (t4_poblacion = t2_poblacion AND t2_modalidad =" & modalidad &") OR (t4_poblacion = t1_poblacion AND t1_modalidad =" & modalidad &")) GROUP BY t4_poblacion ORDER BY t4_poblacion"
me funciona casi pefectamente, pero el problema es que me añade 1 a la suma por cada tabla que tiene alguna coincidencia. Si una de las dos tablas no tiene ninguna coincidencia no suma ese 1 de más. Y por supuesto si ninguna coincide no me sale nada, que es lo que pretendo.

Ejemplo:

Tarragona tengo 3 pisos y 1 casa, tendría que sumar 4 y me da 6
Barcelona 1 piso y 0 casas, tendría que sumar 1, pues da 2
Blanes 0 piso y 2 casas, tendría que sumar 2, pues me da 3


Espero vuestra ayuda, muchas gracias de antemano.
  #2 (permalink)  
Antiguo 14/01/2007, 19:04
 
Fecha de Ingreso: enero-2004
Mensajes: 207
Antigüedad: 20 años, 3 meses
Puntos: 1
Re: COUNT() me suma 1 registro de mas por tabla

buenas, he hecho una variación de los mismo, pero ahora el problema es:

Tarragona tengo 3 pisos y 1 casa, tendría que sumar 4 y me da 1
Barcelona 1 piso y 0 casas, tendría que sumar 1, pues da 1

Código:
strSQL = "SELECT t4_poblacion, COUNT(t4_poblacion) AS suma FROM t4_poblaciones WHERE t4_poblacion = ANY (" &_
					"SELECT t4_poblacion FROM t4_poblaciones, t1_casas WHERE t4_idprovincia=" & provincia & " AND t4_poblacion = t1_poblacion AND t1_modalidad = " & modalidad & _
					" UNION SELECT t4_poblacion FROM t4_poblaciones, t2_pisos WHERE t4_idprovincia=" & provincia & " AND t4_poblacion = t2_poblacion AND t2_modalidad = " & modalidad & _
					") GROUP BY t4_poblacion ORDER BY t4_poblacion"
en fin, la cosa tiene que estar cerca ... a ver si alguien me ilumina, gracias.
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 22:26.