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

[SOLUCIONADO] Duda sobre contadores y UNION

Estas en el tema de Duda sobre contadores y UNION en el foro de Bases de Datos General en Foros del Web. Hola que tal comunidad, tengo un pequeño problema con una funcion que me ayudo a hacer Libras. La funcion es esta: @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código MySQL: ...
  #1 (permalink)  
Antiguo 17/03/2015, 08:14
Avatar de Hakueiryu  
Fecha de Ingreso: febrero-2015
Mensajes: 33
Antigüedad: 9 años, 2 meses
Puntos: 0
Pregunta Duda sobre contadores y UNION

Hola que tal comunidad, tengo un pequeño problema con una funcion que me ayudo a hacer Libras.

La funcion es esta:

Código MySQL:
Ver original
  1. SELECT SUM(total) FROM (
  2. SELECT COUNT(*) AS total FROM tabla1
  3. SELECT COUNT(*) AS total FROM tabla2
  4. SELECT COUNT(*) AS total FROM tabla3
  5. .
  6. .
  7. .
  8. SELECT COUNT(*) AS total FROM tablaN
  9. ) AS t1

Es una funcion para contar los registros de cada tabla y mostrar la suma de los mismos. yo lo estoy usando de esta forma.

Código MySQL:
Ver original
  1. SELECT SUM(total) FROM (
  2.                                     SELECT COUNT(*) AS total FROM proyecto_inversion
  3.                                     UNION
  4.                                     SELECT COUNT(*) AS total FROM proyecto_cgec
  5.                                     UNION
  6.                                     SELECT COUNT(*) AS total FROM proyecto_planagua
  7.                                     UNION
  8.                                     SELECT COUNT(*) AS total FROM proyecto_espeaten
  9.                                     UNION
  10.                                     SELECT COUNT(*) AS total FROM proyecto_gobernacion
  11.                                     UNION
  12.                                     SELECT COUNT(*) AS total FROM proyecto_ministerio
  13.                                     UNION
  14.                                     SELECT COUNT(*) AS total FROM proyecto_envergadura
  15.                                 ) AS t1

El problema es que apartir de la 4 tabla no me aparecen los registros, me pueden ayudar por favor tal vez sea algo que no estoy viendo
  #2 (permalink)  
Antiguo 17/03/2015, 08:37
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Duda sobre contadores y UNION

Prueba:
Código MySQL:
Ver original
  1. SELECT SUM(total) SumaTotal
  2. FROM (SELECT COUNT(*) total FROM proyecto_inversion
  3.            UNION ALL
  4.            SELECT COUNT(*) total FROM proyecto_cgec
  5.            UNION ALL
  6.            SELECT COUNT(*) total FROM proyecto_planagua
  7.            UNION ALL
  8.            SELECT COUNT(*) total FROM proyecto_espeaten
  9.            UNION ALL
  10.            SELECT COUNT(*) total FROM proyecto_gobernacion
  11.            UNION ALL
  12.            SELECT COUNT(*) total FROM proyecto_ministerio
  13.            UNION ALL
  14.            SELECT COUNT(*) total FROM proyecto_envergadura
  15.            ) t1
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 17/03/2015, 08:55
Avatar de Hakueiryu  
Fecha de Ingreso: febrero-2015
Mensajes: 33
Antigüedad: 9 años, 2 meses
Puntos: 0
Respuesta: Duda sobre contadores y UNION

Cita:
Iniciado por gnzsoloyo Ver Mensaje
Prueba:
Código MySQL:
Ver original
  1. SELECT SUM(total) SumaTotal
  2. FROM (SELECT COUNT(*) total FROM proyecto_inversion
  3.            UNION ALL
  4.            SELECT COUNT(*) total FROM proyecto_cgec
  5.            UNION ALL
  6.            SELECT COUNT(*) total FROM proyecto_planagua
  7.            UNION ALL
  8.            SELECT COUNT(*) total FROM proyecto_espeaten
  9.            UNION ALL
  10.            SELECT COUNT(*) total FROM proyecto_gobernacion
  11.            UNION ALL
  12.            SELECT COUNT(*) total FROM proyecto_ministerio
  13.            UNION ALL
  14.            SELECT COUNT(*) total FROM proyecto_envergadura
  15.            ) t1

MUCHAS MUCHAS MUCHAS MUCHAS MUCHAS MUCHISIMAS GRACIAS VIEJO!!!!!!!!!!!!!!!!

De verdad muchas gracias :D
  #4 (permalink)  
Antiguo 17/03/2015, 09:01
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Duda sobre contadores y UNION

Es un problema con el uso de UNION.
UNION genera un DISTINCT automático, donde se eliminan los duplicados de registros, y como estás solo contando, estaba eliminando aquellos registros que entre dos SLECT devolviesen el mismo valor.
Para evitar ese DISTINCT implícito se usa UNION ALL, que exhibe la totalidad de resultados, aunque estos se dupliquen.
No te olvides nuca que en BBDD se considera que un registro devuelto está duplicado cuando todos y cada uno de los campos obtenidos contienen el mismo valor, entre dos registros cualesquiera. Y tu estabas obteniendo un único campos por cada select, con lo que la repetición de valores entre tablas diferentes es altamente probable...
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Última edición por gnzsoloyo; 17/03/2015 a las 09:41
  #5 (permalink)  
Antiguo 17/03/2015, 09:12
Avatar de Hakueiryu  
Fecha de Ingreso: febrero-2015
Mensajes: 33
Antigüedad: 9 años, 2 meses
Puntos: 0
Respuesta: Duda sobre contadores y UNION

Ya veo, no sabia que los registros duplicados presentaban ese problema, es bueno saberlo asi lo tendre en consideracion, de nuevo muchas gracias

Etiquetas: contadores, registro, tabla, union
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 19:53.