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

Select: Multiples COUNT en una BD

Estas en el tema de Select: Multiples COUNT en una BD en el foro de PostgreSQL en Foros del Web. Necesito hacer una consulta que tenga varios COUNT en ella. Tengo tablas en 3 esquemas diferentes, en 3 tablas diferentes, a cada una de ellas ...
  #1 (permalink)  
Antiguo 09/09/2009, 13:52
ssh
 
Fecha de Ingreso: agosto-2009
Mensajes: 85
Antigüedad: 15 años, 3 meses
Puntos: 0
Select: Multiples COUNT en una BD

Necesito hacer una consulta que tenga varios COUNT en ella.

Tengo tablas en 3 esquemas diferentes, en 3 tablas diferentes, a cada una de ellas necesito hacerle un count según algo. Queda así:

SELECT COUNT(campo1) AS c1, COUNT(campo2) AS c2, COUNT(campo3) AS c3
FROM esquema1.campo1 AS ca1, esquema2.campo2 AS ca2, esquema3.campo3 AS ca3,
WHERE ca1.llave = ca2.llave
AND ca3.llave = ca2.llave
AND ca3.llave = 7;

Resultado:

C1: 3
C2: 3
C3: 3

Y debería arrojar:

C1: 3
C2: 1
C3: 1

Por lo tanto, saca mal la cuenta y C2-C3 toman valor "3" cuando debería ser "1", por qué C2 y C3 toman valor de C1? Qué hace que se repita el valor "3"?

Si saco el campo1 del query, todo anda bien. No quiero hacer funciones, se puede hacer lo que estoy haciendo? qué estoy haciendo mal? Hay otra sintaxis para hacerlo?

Gracias....
  #2 (permalink)  
Antiguo 09/09/2009, 14:21
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 10 meses
Puntos: 360
Respuesta: Select: Multiples COUNT en una BD

prueba así:

Código sql:
Ver original
  1. SELECT COUNT(campo1) FROM tabla1
  2. UNION ALL
  3. SELECT COUNT(campo2) FROM tabla2
  4. UNION ALL
  5. SELECT COUNT(campo3) FROM tabla3

Nos cuentas si te sirve.
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #3 (permalink)  
Antiguo 09/09/2009, 16:13
ssh
 
Fecha de Ingreso: agosto-2009
Mensajes: 85
Antigüedad: 15 años, 3 meses
Puntos: 0
Respuesta: Select: Multiples COUNT en una BD

Perfecto! "Peeeeeeeeeeeeero"... de esa forma muestro los datos así:

Campo1 (Toma el nombre del primer campo)
dato1
dato2
dato3
________________________________

dato1= Resultado del COUNT(Campo1)
dato2= Resultado del COUNT(Campo2)
dato3= Resultado del COUNT(Campo3)

Estoy haciendo una consulta desde un JSP a una BD Postgres, por lo tanto, necesito sacar los datos con un "getInt(dato)" (en el caso q sea Int), me serviría si el resultado fuera así:

Campo1 | Campo2 | Campo3
dato1 | dato2 | dato3

comprendes? los COUNT devuelven un "bigint" (en JSP es un "long"), podría hacer un simple while(resultado.next) y mostrar uno a uno los datos.... voy a ver si me sirve así y te cuento, pero igual dejo la duda si se pued ehacer algo así.

A no ser que haya una forma de
  #4 (permalink)  
Antiguo 09/09/2009, 21:02
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 10 meses
Puntos: 360
Respuesta: Select: Multiples COUNT en una BD

Código sql:
Ver original
  1. SELECT t1.conteo1,t2.conteo2,t3.conteo3 FROM
  2. (SELECT COUNT(campo1) AS conteo1 FROM tabla1) AS t1,
  3. (SELECT COUNT(campo2) AS conteo2 FROM tabla2) AS t2,
  4. (SELECT COUNT(campo3) AS conteo3 FROM tabla3 AS t3;

así es los 3 conteos en un solo registro.

saludos
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #5 (permalink)  
Antiguo 10/09/2009, 10:11
ssh
 
Fecha de Ingreso: agosto-2009
Mensajes: 85
Antigüedad: 15 años, 3 meses
Puntos: 0
Respuesta: Select: Multiples COUNT en una BD

Excelente! ese query soluciona perfecto mi problema!
Muestra todo así:

Campo1 | Campo2 | Campo3
datos1 | dato2 | dato3

Y se puede rescatar por separado desde el JSP!
Muchas 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 00:50.