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

un solo resultado con varios count

Estas en el tema de un solo resultado con varios count en el foro de Mysql en Foros del Web. Hola, les explico tengo tres tablas T1 id caso prioridad fecha T2 id idcaso T3 id idcaso donde idcaso de T2, T3 es igual a ...
  #1 (permalink)  
Antiguo 10/07/2009, 08:56
Avatar de asassa  
Fecha de Ingreso: julio-2008
Ubicación: En el DF ectuoso
Mensajes: 240
Antigüedad: 15 años, 9 meses
Puntos: 0
un solo resultado con varios count

Hola, les explico tengo tres tablas
T1
id
caso
prioridad
fecha

T2
id
idcaso

T3
id
idcaso

donde idcaso de T2, T3 es igual a id de T1

este es el query que usaba, pero necesito que el lugar de que mede los resultados en c1 y c2, tambien me de una columna c3 donde el resultado sea igual a c1+ c2.

Alguien me puede ayudar o como se haria. con otro count


gracias
SELECT caso.id, caso.caso, caso.prioridad, caso.fecha,
(SELECT COUNT(hi.idcaso) FROM hi WHERE hi.idcaso=caso.id)c1,
(SELECT COUNT(fb.idcaso) FROM fb WHERE fb.idcaso=caso.id)c2
from caso;
  #2 (permalink)  
Antiguo 10/07/2009, 09:08
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 2 meses
Puntos: 360
Respuesta: un solo resultado con varios count

Código sql:
Ver original
  1. SELECT caso.id, caso.caso, caso.prioridad, caso.fecha, c1.conteo,c2.conteo,(c1.conteo+c2.conteo) total
  2. FROM caso
  3. INNER JOIN
  4. (SELECT idcaso,COUNT(hi.idcaso)conteo FROM hi WHERE hi.idcaso=caso.id)c1
  5. ON caso.id=c1.idcaso
  6. INNER JOIN
  7. (SELECT idcaso,COUNT(fb.idcaso)conteo FROM fb WHERE fb.idcaso=caso.id)c2
  8. ON caso.id=c2.idcaso

No lo he probado
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #3 (permalink)  
Antiguo 10/07/2009, 09:32
Avatar de asassa  
Fecha de Ingreso: julio-2008
Ubicación: En el DF ectuoso
Mensajes: 240
Antigüedad: 15 años, 9 meses
Puntos: 0
Respuesta: un solo resultado con varios count

Hola gracias por la ayuda, pero me marca un error

Unknown column 'caso.id' in 'where clause'

pero lo estoy revisando haber si lo puedo ver el error , gracias...
  #4 (permalink)  
Antiguo 10/07/2009, 09:48
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 2 meses
Puntos: 360
Respuesta: un solo resultado con varios count

Fijate que caso.id es un campo que tu ya tenias en la primera consulta.
Te hago una pregunta..
La consulta que en un principio posteaste.. te funciona?
En la consulta que te pongo, tomo como referencia tu consulta anterior.
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #5 (permalink)  
Antiguo 10/07/2009, 09:54
Avatar de asassa  
Fecha de Ingreso: julio-2008
Ubicación: En el DF ectuoso
Mensajes: 240
Antigüedad: 15 años, 9 meses
Puntos: 0
Respuesta: un solo resultado con varios count

si, el primero qeu postie esta funcionando a la perfeccion pero un me queda una duda con la sentnacia (c1.conteo+c2.conteo) total
la verdad nunca he hecho una suma asi, yo las que he realizado son son sum, pero no se si tenmga que ver...

gracias
  #6 (permalink)  
Antiguo 10/07/2009, 10:28
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 2 meses
Puntos: 360
Respuesta: un solo resultado con varios count

Mira este..
ya lo probé y parece funcionar.

Código sql:
Ver original
  1. SELECT caso.id, caso.caso, caso.prioridad, caso.fecha, ifnull(c1.conteo,0)conteo1,ifnull(c2.conteo,0)conteo2,(ifnull(c1.conteo,0)+ifnull(c2.conteo,0)) total
  2. FROM caso
  3. LEFT JOIN
  4. (SELECT idcaso,COUNT(hi.idcaso)conteo FROM hi INNER JOIN caso ON caso.id=hi.idcaso GROUP BY idcaso)c1
  5. ON caso.id=c1.idcaso
  6. LEFT JOIN
  7. (SELECT idcaso,COUNT(fb.idcaso)conteo FROM fb INNER JOIN caso ON caso.id=fb.idcaso GROUP BY idcaso)c2
  8. ON caso.id=c2.idcaso;

Nos cuentas como te va.

Si mysql soportara el full join, nos ahorrariamos los ifnull en los campos a mostrar. Igual esperemos que los maestros SQL nos muestren una forma mas elegante de solucionar esta consulta.

Un saludo.
__________________
Without data, You are another person with an opinion.
W. Edwads Deming

Última edición por huesos52; 10/07/2009 a las 10:33
  #7 (permalink)  
Antiguo 10/07/2009, 10:33
Avatar de asassa  
Fecha de Ingreso: julio-2008
Ubicación: En el DF ectuoso
Mensajes: 240
Antigüedad: 15 años, 9 meses
Puntos: 0
Respuesta: un solo resultado con varios count

tyo encontre un query pero no se si postearlo con otro ejemplo asi que lo voy a pasar como lo he adaptado, pero sigue sin funcionar

select caso.id, caso.caso, a.suma + b.suma2 as suma3
from(
SELECT t1.id, COUNT(t2.idcaso)suma
FROM caso t1 JOIN hi t2 ON t1.id=t2.idcaso )a
full outer join
(select t1.id, count(t3.idcaso)suma2
from caso t1 join fb t3 on t1.id=t3.idcaso )b
on caso.id=hi.idcaso and caso.id=fb.idcaso
  #8 (permalink)  
Antiguo 10/07/2009, 10:35
Avatar de asassa  
Fecha de Ingreso: julio-2008
Ubicación: En el DF ectuoso
Mensajes: 240
Antigüedad: 15 años, 9 meses
Puntos: 0
Respuesta: un solo resultado con varios count

gracias, me funcioono el ultimo query que me mandastes..muchas gracias...XD
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 04:28.