Ver Mensaje Individual
  #20 (permalink)  
Antiguo 09/03/2013, 17:27
Avatar de gnzsoloyo
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, 5 meses
Puntos: 2658
Respuesta: problema para generar tabla desde consulta

¡Ahora sí estamos hablando cosas concretas!

Bueno, supongamos que tomamos la consulta final, y le queremos agregar allí dos columnas al final, que en realidad tendrán datos en cero. Son columnas virtuales, porque no existen en realidad, pero las "fabricamos" para el resultado de la consulta:
Código SQL:
Ver original
  1. SELECT
  2.     item,
  3.     V.codigo codigovolcan,
  4.     V.nombre nombrevolcan,
  5.     V.alias,
  6.     codigo_observatorio,
  7.     TE.codigo codigotipoestacion,
  8.     TE.nombre nombreestacion,
  9.     A.nombre nombrearea,
  10.     A.codigo codigoarea,
  11.     0 TotalTelem,
  12.     0 TotalNoTelem
  13. FROM
  14.     volcan V
  15.     INNER JOIN inv_est_instaladas IEI ON V.codigo = IEI.codigo_volcan
  16.     INNER JOIN conectividad_inv_estaciones CIE ON  IEI.item = CIE.item_inv_est_instaladas
  17.     INNER JOIN tipo_estacion TE ON IEI.codigo_tipo_estacion = TE.codigo
  18.     INNER JOIN area A ON TE.codigo_area =  A.codigo
  19. WHERE
  20.     V.código_observatorio = 'ovsm'
  21.     AND TE.suma = 't'
  22.     AND CIE.item_conectividad = 1
  23. ORDER BY
  24.     A.codigo,
  25.     TE.codigo,
  26.     V.codigo
He aprovechado para corregir un poco el orden de las tablas y agregarle los alias que simplifican la escritura, así como quitares los "AS" que actualmente son obsoletos y no generan nada.
Les he puesto INNER JOIN en lugar de la coma, porque el parser está optimizado para hacerlo mejor al realizar ese filtrado en el FROM y no en el WHERE. Lamentablemente los manuales insisten en usar la coma, que es francamente un desastre de performance llegado el momento de consultas masivas.

Bueno, ese sería el esquema que yo usaría para la consulta. De ese modo la cantidad de columnas de la tabla de datos devuelta coincidiría con la cantidad de columnas a representar en la pantalla.
Incluso se puede llegar más lejos y crear datos sumando valores en esas columnas dentro de la consulta, o bien poner los alias de las columnas que realmente usarán en la salida de datos al usuario, y simplemente recorrer tanto los encabezados como los datos al momento de representarlo.... pero eso te lo dejo a ti...
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)