Ver Mensaje Individual
  #19 (permalink)  
Antiguo 09/03/2013, 16:43
Montes28
 
Fecha de Ingreso: septiembre-2010
Mensajes: 1.853
Antigüedad: 13 años, 7 meses
Puntos: 6
Respuesta: problema para generar tabla desde consulta

para hacer encabezado de la tabla primero realizo la consulta para saber el numero de volcanes el cual es 7

Código SQL:
Ver original
  1. CREATE TABLE volcan
  2. (
  3.   codigo CHARACTER VARYING(10) NOT NULL,
  4.   nombre CHARACTER VARYING(30),
  5.   descripcion CHARACTER VARYING(50),
  6.   latitud REAL,
  7.   longitud REAL,
  8.   codigo_observatorio CHARACTER VARYING(8),
  9.   alias CHARACTER VARYING(15),
  10.   CONSTRAINT pk_volcan_codigo PRIMARY KEY (codigo),
  11.   CONSTRAINT fk_volcan_observatorio FOREIGN KEY (codigo_observatorio)
  12.       REFERENCES observatorio (codigo) MATCH SIMPLE
  13.       ON UPDATE NO ACTION ON DELETE NO ACTION
  14. )
  15.  
  16. SELECT * FROM volcan WHERE codigo_observatorio = 'ovsm' ORDER BY nombre
  17. SELECT COUNT(*) FROM volcan WHERE codigo_observatorio = 'ovsm'


la consulta para los 140 registros es esta

Código SQL:
Ver original
  1. SELECT cantidad,item,volcan.codigo AS codigovolcan,volcan.nombre AS nombrevolcan,volcan.alias,codigo_observatorio,tipo_estacion.codigo AS codigotipoestacion,tipo_estacion.nombre AS nombreestacion,area.nombre AS nombrearea,area.codigo AS codigoarea FROM inv_est_instaladas,volcan,tipo_estacion,area WHERE inv_est_instaladas.codigo_volcan = volcan.codigo AND tipo_estacion.codigo = inv_est_instaladas.codigo_tipo_estacion AND tipo_estacion.codigo_area = area.codigo AND volcan.codigo_observatorio = :obsevatorio ORDER BY area.codigo, tipo_estacion.codigo, volcan.codigo

y esta es la estructura de las tablas consultadas

Código SQL:
Ver original
  1. CREATE TABLE inv_est_instaladas
  2. (
  3.   cantidad INTEGER,
  4.   codigo_volcan CHARACTER VARYING(10),
  5.   codigo_tipo_estacion CHARACTER VARYING(8),
  6.   item serial NOT NULL,
  7.   CONSTRAINT pk_inv_est_instaladas PRIMARY KEY (item),
  8.   CONSTRAINT fk_inv_est_instaladas_volcan FOREIGN KEY (codigo_volcan)
  9.       REFERENCES volcan (codigo) MATCH SIMPLE
  10.       ON UPDATE NO ACTION ON DELETE NO ACTION,
  11.   CONSTRAINT fk_inv_estaciones_tipo_estacion FOREIGN KEY (codigo_tipo_estacion)
  12.       REFERENCES tipo_estacion (codigo) MATCH SIMPLE
  13.       ON UPDATE NO ACTION ON DELETE NO ACTION
  14. )
  15.  
  16. CREATE TABLE tipo_estacion
  17. (
  18.   codigo CHARACTER VARYING(15) NOT NULL,
  19.   codigo_area CHARACTER VARYING(15),
  20.   descripcion CHARACTER VARYING(50),
  21.   nombre CHARACTER VARYING(40),
  22.   suma BOOLEAN,
  23.   CONSTRAINT pk_tipo_estacion_codigo PRIMARY KEY (codigo),
  24.   CONSTRAINT fk_tipo_estacion_area FOREIGN KEY (codigo_area)
  25.       REFERENCES area (codigo) MATCH SIMPLE
  26.       ON UPDATE NO ACTION ON DELETE NO ACTION
  27. )
  28.  
  29. CREATE TABLE area
  30. (
  31.   codigo CHARACTER VARYING(15) NOT NULL,
  32.   descripcion CHARACTER VARYING(250),
  33.   nombre CHARACTER VARYING(30),
  34.   CONSTRAINT area_pkey PRIMARY KEY (codigo)
  35. )


y las dos consultas que requiero poner en las ultimas columnas son , tambien son 140 registros

Código SQL:
Ver original
  1. SELECT item,volcan.codigo AS codigovolcan,volcan.nombre AS nombrevolcan,volcan.alias,codigo_observatorio,tipo_estacion.codigo AS codigotipoestacion,tipo_estacion.nombre AS nombreestacion,area.nombre AS nombrearea,area.codigo AS codigoarea
  2. FROM inv_est_instaladas,conectividad_inv_estaciones,volcan,tipo_estacion,area
  3. WHERE inv_est_instaladas.item = conectividad_inv_estaciones.item_inv_est_instaladas AND inv_est_instaladas.codigo_volcan = volcan.codigo AND tipo_estacion.codigo = inv_est_instaladas.codigo_tipo_estacion AND tipo_estacion.codigo_area = area.codigo AND volcan.codigo_observatorio = 'ovsm' AND tipo_estacion.suma = 't' AND conectividad_inv_estaciones.item_conectividad = 1 ORDER BY area.codigo, tipo_estacion.codigo, volcan.codigo