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

problema para imprimir consulta en tabla

Estas en el tema de problema para imprimir consulta en tabla en el foro de PostgreSQL en Foros del Web. hola amigos espero me puedan ayudar , necesito imprimir la siguiente consulta http://imageshack.us/photo/my-images/43/imprimirh.jpg/ de la siguiente manero http://imageshack.us/photo/my-images/43/imprimirh.jpg/ este es mi codigo @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código ...
  #1 (permalink)  
Antiguo 11/04/2013, 15:54
 
Fecha de Ingreso: septiembre-2010
Mensajes: 1.853
Antigüedad: 13 años, 6 meses
Puntos: 6
problema para imprimir consulta en tabla

hola amigos espero me puedan ayudar , necesito imprimir la siguiente consulta http://imageshack.us/photo/my-images/43/imprimirh.jpg/ de la siguiente manero http://imageshack.us/photo/my-images/43/imprimirh.jpg/

este es mi codigo
Código HTML:
Ver original
  1. <table width="817" class="table table-bordered table-hover">
  2.   <tr>
  3.     <td width="255"><div align="center"><strong>Observatorio</strong></div></td>
  4.     <td width="204"><div align="center"><strong>Telemetricas</strong></div></td>
  5.     <td width="183"><div align="center"><strong>No Telemetricas</strong></div></td>
  6.     <td width="155"><div align="center"><strong> Estaciones </strong></div></td>
  7.   </tr>

Código PHP:
Ver original
  1. <?php
  2. $observatorio="";
  3. foreach($listo as $field)
  4. {
  5.  
  6.  
  7. if($observatorio != $field['codigo_observatorio']) {
  8. ?>
  9.         <tr>
  10.         <td><?php echo $field['codigo_observatorio']?></td>
  11.         <td><?php echo $field['sum']?></td>
  12.         <td><?php echo $field['sum']?></td>
  13.         </tr>    
  14.     <?     
  15.    
  16.     }
  17.     $observatorio = $field['codigo_observatorio'];
  18.  
  19.  
  20.  
  21.  
  22. }
  23. ?>

Código HTML:
Ver original 

tengo problema con la segunda columna por deberia imprimir
  #2 (permalink)  
Antiguo 11/04/2013, 16:30
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 7 meses
Puntos: 2237
Respuesta: problema para imprimir consulta en tabla

En las dos columnas estás usando $field['sum'], es lógico que te imprima lo mismo.

Muestra tu consulta SQL, seguro ahí está el problema.
__________________
- León, Guanajuato
- GV-Foto
  #3 (permalink)  
Antiguo 11/04/2013, 16:36
 
Fecha de Ingreso: septiembre-2010
Mensajes: 1.853
Antigüedad: 13 años, 6 meses
Puntos: 6
Respuesta: problema para imprimir consulta en tabla

Triby gracias por responder esta es mi consulta

Código SQL:
Ver original
  1. SELECT SUM(conectividad_inv_estaciones.cantidad),volcan.codigo_observatorio
  2. FROM inv_est_instaladas,conectividad_inv_estaciones,volcan
  3. WHERE inv_est_instaladas.codigo_volcan = volcan.codigo AND inv_est_instaladas.item = conectividad_inv_estaciones.item_inv_est_instaladas AND conectividad_inv_estaciones.item_conectividad = 1
  4. GROUP BY volcan.codigo_observatorio
  5. UNION ALL
  6. SELECT SUM(conectividad_inv_estaciones.cantidad),volcan.codigo_observatorio
  7. FROM inv_est_instaladas,conectividad_inv_estaciones,volcan
  8. WHERE inv_est_instaladas.codigo_volcan = volcan.codigo AND inv_est_instaladas.item = conectividad_inv_estaciones.item_inv_est_instaladas AND conectividad_inv_estaciones.item_conectividad = 2
  9. GROUP BY volcan.codigo_observatorio
  10. ORDER BY 2

sum codigo_observatorio
93 ovsm
71 ovsm
62 ovsp
57 ovsp
63 ovspop
32 ovspop

y necesito imprimirlo asi
ovsm 93 71
ovsp 62 57
ovspop 63 32
  #4 (permalink)  
Antiguo 11/04/2013, 16:40
 
Fecha de Ingreso: abril-2008
Ubicación: El Salvador
Mensajes: 736
Antigüedad: 15 años, 11 meses
Puntos: 47
Respuesta: problema para imprimir consulta en tabla

Lo que sucede es que los alias se llaman igual por lo tanto no hace distinción
  #5 (permalink)  
Antiguo 11/04/2013, 16:43
 
Fecha de Ingreso: septiembre-2010
Mensajes: 1.853
Antigüedad: 13 años, 6 meses
Puntos: 6
Respuesta: problema para imprimir consulta en tabla

alex1084 ese no es el problemas porque es una UNION ALL
  #6 (permalink)  
Antiguo 11/04/2013, 16:48
 
Fecha de Ingreso: abril-2008
Ubicación: El Salvador
Mensajes: 736
Antigüedad: 15 años, 11 meses
Puntos: 47
Respuesta: problema para imprimir consulta en tabla

Entonces no es problema de la consulta es problema de como armas el html porque lo que te muestra en la tabla es correcto ya que en la misma itración del foreach estas llamando al mismo campo

Código PHP:
Ver original
  1. <td><?php echo $field['sum']?></td>
  2.         <td><?php echo $field['sum']?></td>
  #7 (permalink)  
Antiguo 11/04/2013, 16:54
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 7 meses
Puntos: 2237
Respuesta: problema para imprimir consulta en tabla

alex1084 tiene razón en sus dos respuestas, deberías tener algo como:

Código PHP:
Ver original
  1. SELECT SUM(campos) as suma1, mas_campos
  2. condiciones, orden, etc
  3. UNION ALL
  4. SELECT SUM(campos) as suma2, mas campos
  5. condiciones, orden, etc

Y entonces, usarías los alias suma1 y suma2 para tus columnas.
__________________
- León, Guanajuato
- GV-Foto
  #8 (permalink)  
Antiguo 11/04/2013, 17:01
 
Fecha de Ingreso: septiembre-2010
Mensajes: 1.853
Antigüedad: 13 años, 6 meses
Puntos: 6
Respuesta: problema para imprimir consulta en tabla

ya hice el cambio y no funciona

Código SQL:
Ver original
  1. SELECT SUM(conectividad_inv_estaciones.cantidad) AS suma1 ,volcan.codigo_observatorio
  2. FROM inv_est_instaladas,conectividad_inv_estaciones,volcan
  3. WHERE inv_est_instaladas.codigo_volcan = volcan.codigo AND inv_est_instaladas.item = conectividad_inv_estaciones.item_inv_est_instaladas AND conectividad_inv_estaciones.item_conectividad = 1
  4. GROUP BY volcan.codigo_observatorio
  5. UNION ALL
  6. SELECT SUM(conectividad_inv_estaciones.cantidad) AS suma2 ,volcan.codigo_observatorio
  7. FROM inv_est_instaladas,conectividad_inv_estaciones,volcan
  8. WHERE inv_est_instaladas.codigo_volcan = volcan.codigo AND inv_est_instaladas.item = conectividad_inv_estaciones.item_inv_est_instaladas AND conectividad_inv_estaciones.item_conectividad = 2
  9. GROUP BY volcan.codigo_observatorio
  10. ORDER BY 2


93 ovsm
71 ovsm
62 ovsp
57 ovsp
63 ovspop
32 ovspop
  #9 (permalink)  
Antiguo 11/04/2013, 17:27
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 7 meses
Puntos: 2237
Respuesta: problema para imprimir consulta en tabla

Mucho me temo que habrá que reportar tu tema para que lo muevan a MySQL, donde seguramente podrán orientarte mucho mejor que aquí.

Reportando!
__________________
- León, Guanajuato
- GV-Foto
  #10 (permalink)  
Antiguo 11/04/2013, 20:19
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: problema para imprimir consulta en tabla

Cita:
Iniciado por Montes28 Ver Mensaje

sum codigo_observatorio
93 ovsm
71 ovsm
62 ovsp
57 ovsp
63 ovspop
32 ovspop

y necesito imprimirlo asi
ovsm 93 71
ovsp 62 57
ovspop 63 32

Ese tipo de resultado nunca lo obtendrás usando UNION. Sólo se consigue con un JOIN, y de todos modos es poco práctico para lo que necesitas hacer.
Una forma más sencilla sería:
Código MySQL:
Ver original
  1.     V.codigo_observatorio,
  2.     IF(CIE.item_conectividad = 1, SUM(CIE.cantidad), 0)suma1,
  3.     IF(CIE.item_conectividad = 2, SUM(CIE.cantidad), 0)suma2
  4.     inv_est_instaladas IE
  5.     INNER JOIN conectividad_inv_estaciones CIE ON IE.item = CIE.item_inv_est_instaladas
  6.     INNER JOIN volcan V ON IE.codigo_volcan = V.codigo
  7.     CIE.item_conectividad IN(1, 2)
  8. GROUP BY V.codigo_observatorio ASC;
Ahora bien, si lo quieres hacer al mismo estilo que lo planteabas tu, sería:
Código MySQL:
Ver original
  1.     T1.codigo_observatorio, T1.suma Suma1, T2.suma Suma2
  2.     (SELECT
  3.         V.codigo_observatorio,
  4.         SUM(CIE.cantidad) suma
  5.     FROM
  6.         inv_est_instaladas IE
  7.         INNER JOIN conectividad_inv_estaciones CIE ON IE.item = CIE.item_inv_est_instaladas
  8.         INNER JOIN volcan V ON IE.codigo_volcan = V.codigo
  9.     WHERE
  10.         CIE.item_conectividad  = 1
  11.     GROUP BY V.codigo_observatorio) T1
  12.     INNER JOIN
  13.     (SELECT
  14.         V.codigo_observatorio,
  15.         SUM(CIE.cantidad) suma
  16.     FROM
  17.         inv_est_instaladas IE
  18.         INNER JOIN conectividad_inv_estaciones CIE ON IE.item = CIE.item_inv_est_instaladas
  19.         INNER JOIN volcan V ON IE.codigo_volcan = V.codigo
  20.     WHERE
  21.         CIE.item_conectividad  = 2
  22.     GROUP BY V.codigo_observatorio) T2 ON T1.codigo_observatorio = T2.codigo_observatorio
  23. ORDER BY codigo_observatorio;

Como podrás ver, la primera forma es mucho más simple.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #11 (permalink)  
Antiguo 11/04/2013, 20:25
 
Fecha de Ingreso: septiembre-2010
Mensajes: 1.853
Antigüedad: 13 años, 6 meses
Puntos: 6
Respuesta: problema para imprimir consulta en tabla

gnzsoloyo gracias por responder ejecute la primera consulta y me sale un error porque ?

Cita:
SELECT
V.codigo_observatorio,
IF(CIE.item_conectividad = 1, SUM(CIE.cantidad), 0)suma1,
IF(CIE.item_conectividad = 2, SUM(CIE.cantidad), 0)suma2
FROM
inv_est_instaladas IE
INNER JOIN conectividad_inv_estaciones CIE ON IE.item = CIE.item_inv_est_instaladas
INNER JOIN volcan V ON IE.codigo_volcan = V.codigo
WHERE
CIE.item_conectividad IN(1, 2)
GROUP BY V.codigo_observatorio ASC;

ERROR: no existe la función if(boolean, bigint, integer)
LINE 3: IF(CIE.item_conectividad = 1, SUM(CIE.cantidad), 0)suma1...
  #12 (permalink)  
Antiguo 11/04/2013, 20:34
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: problema para imprimir consulta en tabla

Por lo pronto... ¿Estás seguro de estar usando MySQL?
¿Estás ejecutandolo como una consulta de SQL?

Sin saber el contexto, es difícil de adivinar...

Lo que sí puedo anticipar, es que cometí un error de orden:
Código MySQL:
Ver original
  1.     V.codigo_observatorio,
  2.     SUM(IF(CIE.item_conectividad = 1, CIE.cantidad, 0)) suma1,
  3.     SUM(IF(CIE.item_conectividad = 2, CIE.cantidad, 0) suma2
  4.     inv_est_instaladas IE
  5.     INNER JOIN conectividad_inv_estaciones CIE ON IE.item = CIE.item_inv_est_instaladas
  6.     INNER JOIN volcan V ON IE.codigo_volcan = V.codigo
  7.     CIE.item_conectividad IN(1, 2)
  8. GROUP BY V.codigo_observatorio ASC;
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #13 (permalink)  
Antiguo 11/04/2013, 20:36
 
Fecha de Ingreso: septiembre-2010
Mensajes: 1.853
Antigüedad: 13 años, 6 meses
Puntos: 6
Respuesta: problema para imprimir consulta en tabla

gnzsoloyo lo que pasa es que triby fue el que reporto el tema y el asumio que yo estaba utilizando Mysql y yo estoy utilizando Postgresql

Cita:
Mucho me temo que habrá que reportar tu tema para que lo muevan a MySQL, donde seguramente podrán orientarte mucho mejor que aquí.

Reportando!
  #14 (permalink)  
Antiguo 11/04/2013, 20:38
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: problema para imprimir consulta en tabla

Bueno, entonces deberás solicitar la solución allá.
Ahora lo paso, y fíjate qué funciones tiene Postgre para cumplir con esa lógica.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #15 (permalink)  
Antiguo 11/04/2013, 21:37
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 1 mes
Puntos: 360
Respuesta: problema para imprimir consulta en tabla

Montes28, te recomiendo el uso de sentencias CASE para simular el IF que te propone gnzsoloyo.

Código SQL:
Ver original
  1. SELECT SUM(CASE WHEN CIE.item_conectividad = 1 THEN CIE.cantidad ELSE 0 END) suma1,

No lo he probado pero creo que asi funciona.

saludos
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #16 (permalink)  
Antiguo 12/04/2013, 07:36
 
Fecha de Ingreso: septiembre-2010
Mensajes: 1.853
Antigüedad: 13 años, 6 meses
Puntos: 6
Respuesta: problema para imprimir consulta en tabla

gnzsoloyo y huesos52 gracias por sus respuestas me sirvieron muchisimo. asi quedo la consulta pero solo me falta sumar las columnas resultantes que queden en una tercera es posible hacerlo? suma1 + suma2

Código SQL:
Ver original
  1. SELECT V.codigo_observatorio,SUM(CASE WHEN CIE.item_conectividad = 1 THEN CIE.cantidad ELSE 0 END) suma1,
  2.        SUM(CASE WHEN CIE.item_conectividad = 2 THEN CIE.cantidad ELSE 0 END) suma2
  3. FROM
  4.     inv_est_instaladas IE
  5.     INNER JOIN conectividad_inv_estaciones CIE ON IE.item = CIE.item_inv_est_instaladas
  6.     INNER JOIN volcan V ON IE.codigo_volcan = V.codigo
  7. WHERE
  8.     CIE.item_conectividad IN(1, 2)
  9. GROUP BY V.codigo_observatorio;
  #17 (permalink)  
Antiguo 12/04/2013, 07:46
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 1 mes
Puntos: 360
Respuesta: problema para imprimir consulta en tabla

Código SQL:
Ver original
  1. SELECT codigo_observatorio,suma1,suma2,(suma1+suma2) suma_total
  2. FROM
  3. (
  4. SELECT V.codigo_observatorio codigo_observatorio,
  5. SUM(CASE WHEN CIE.item_conectividad = 1 THEN CIE.cantidad ELSE 0 END) suma1,
  6. SUM(CASE WHEN CIE.item_conectividad = 2 THEN CIE.cantidad ELSE 0 END) suma2
  7. FROM
  8.     inv_est_instaladas IE
  9.     INNER JOIN conectividad_inv_estaciones CIE ON IE.item = CIE.item_inv_est_instaladas
  10.     INNER JOIN volcan V ON IE.codigo_volcan = V.codigo
  11. WHERE
  12.     CIE.item_conectividad IN(1, 2)
  13. GROUP BY V.codigo_observatorio
  14. ) AS t;

Creo que esto te vale.
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #18 (permalink)  
Antiguo 12/04/2013, 07:58
 
Fecha de Ingreso: septiembre-2010
Mensajes: 1.853
Antigüedad: 13 años, 6 meses
Puntos: 6
Respuesta: problema para imprimir consulta en tabla

huesos52 me funciono perfecto la consulta que me indicas. gracias

Etiquetas: php, tabla
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 23:35.