Ver Mensaje Individual
  #4 (permalink)  
Antiguo 20/08/2014, 11:05
orteloco
 
Fecha de Ingreso: enero-2013
Ubicación: cusco
Mensajes: 13
Antigüedad: 11 años, 3 meses
Puntos: 0
Respuesta: dibujar una tabla

NSD sos un maestro........ gracias .....me hace una gran ayuda pero una pregunta el ejemplo que me diste de simular el pivot dinamico : da...

SELECT pregunta, (SELECT tmp.respuesta FROM test tmp WHERE tmp.zona = 'arturo' AND tmp.pregunta = main.pregunta) arturo,
(SELECT tmp.respuesta FROM test tmp WHERE tmp.zona = 'juan' AND tmp.pregunta = main.pregunta) juan,
(SELECT tmp.respuesta FROM test tmp WHERE tmp.zona = 'maria' AND tmp.pregunta = main.pregunta) MARIA
FROM test main GROUP BY pregunta;

pero al ahcer consula ami tabla se traba en 8 zonas pero son mas 20 zonas :

SELECT pregunta, (SELECT tmp.respuesta FROM test tmp WHERE tmp.zona = 'CORMALLANZACORMA' AND tmp.pregunta = main.pregunta) CORMALLANZACORMA,
(SELECT tmp.respuesta FROM test tmp WHERE tmp.zona = 'MANZACORMAACOPUNCU' AND tmp.pregunta = main.pregunta) MANZACORMAACOPUNCU,
(SELECT tmp.respuesta FROM test tmp WHERE tmp.zona = 'ACOSSIMPPY' AND tmp.pregunta = main.pregunta) ACOSSIMPPY,
(SELECT tmp.respuesta FROM test tmp WHERE tmp.zona = 'CORMACHALANIA' AND tmp.pregunta = main.pregunta) CORMACHALANIA,
(SELECT tmp.respuesta FROM test tmp WHERE tmp.zona = 'HUAYQUIPERCCA' AND tmp.pregunta = main.pregunta) HUAYQUIPERCCA,
(SELECT tmp.respuesta FROM test tmp WHERE tmp.zona = 'HUAYQUILLAPAYPAMPA' AND tmp.pregunta = main.pregunta) HUAYQUILLAPAYPAMPA,
(SELECT tmp.respuesta FROM test tmp WHERE tmp.zona = 'HUAYQUIHUAYQUI' AND tmp.pregunta = main.pregunta) HUAYQUIHUAYQUI,
(SELECT tmp.respuesta FROM test tmp WHERE tmp.zona = 'HUAYQUICAMPI' AND tmp.pregunta = main.pregunta) HUAYQUICAMPI,
(SELECT tmp.respuesta FROM test tmp WHERE tmp.zona = 'CORMALLANZACOR FROM test main GROUP BY pregunta;

eso es mira es un trabajo pa la u me diron tablas :
no soy bueno pa la mysql pero en sql aprendi cursores hice esto

DELIMITER $$
USE `bd_sias`$$
DROP PROCEDURE IF EXISTS `tatata`$$
CREATE DEFINER=`root`@`localhost` PROCEDURE `tatata`()
BEGIN
DECLARE intervencion INT;
DECLARE cont INT DEFAULT 0;
DECLARE aidseccion VARCHAR(7);
DECLARE aidsubseccion INT;
DECLARE aiditem INT;
DECLARE atitulo VARCHAR(255);
DECLARE anivel INT;
DECLARE anombre VARCHAR(255);
DECLARE avalor VARCHAR(255);
DECLARE arespuesta VARCHAR(255);
DECLARE flag2 INT DEFAULT 0;
DECLARE flag INT DEFAULT 0;
DECLARE Cursorcod CURSOR FOR SELECT idintervencion FROM intervencion WHERE idPeriodo= 2014 AND iddistrito=03 AND idprovincia=02 AND idRegion=08;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET flag = 1;
SET flag = 0;
OPEN Cursorcod;
get_inter: LOOP
FETCH Cursorcod INTO intervencion;
IF flag = 1 THEN
LEAVE get_inter;
END IF;
SET cont = cont +1;
SET @variable1 = (SELECT CONCAT(C.NOMBRE ,S.NOMBRE)FROM sector S JOIN intervencion I USING ( idsector,idcomunidad,iddistrito,idprovincia,idregi on)JOIN comunidad C USING (idcomunidad,iddistrito,idprovincia,idregion) WHERE I.idintervencion=intervencion LIMIT 1);


-- INSERT INTO cara VALUES (@variable1,@variable1,@variable1);

BLOCK2: BEGIN
DECLARE Cursordatos CURSOR FOR SELECT I.idSeccion,I.idSubSeccion,I.idItem,I.titulo,I.niv el,TD.nombre, ES.valor FROM evaluacionsaneamiento ES JOIN item I USING(idSeccion,idSubSeccion,idItem)JOIN tipodato TD USING(idTipoDato) WHERE I.idSeccion='III' AND I.habilitado AND I.idSubSeccion="1" AND ES.idintervencion=intervencion ORDER BY I.orden;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET flag2 = 1;
SET flag2 = 0;
OPEN Cursordatos;

get_data: LOOP
FETCH Cursordatos INTO aidseccion,aidsubseccion,aiditem,atitulo,anivel,an ombre,avalor;
IF flag2 = 1 THEN
LEAVE get_data;
END IF;
IF anombre= "Booleano" THEN SET arespuesta = (SELECT etiqueta FROM alternativasaneamiento WHERE iditem =aiditem AND idSubSeccion=aidsubseccion AND valor = avalor AND idSeccion=aidseccion ) ;
END IF;
IF anombre= "Numero" THEN SET arespuesta =avalor;
END IF;
IF anombre= "Componente" THEN SET arespuesta =avalor;
END IF;
IF anombre= "Fecha" THEN SET arespuesta =avalor;
END IF;
IF anombre= "Multiple" THEN SET arespuesta = (SELECT etiqueta FROM alternativasaneamiento WHERE iditem =aiditem AND idSubSeccion=aidsubseccion AND valor = avalor AND idSeccion=aidseccion ) ;
END IF;

IF avalor IS NULL THEN SET arespuesta ='---';
END IF;
INSERT INTO test VALUES (atitulo,arespuesta,@variable1);

END LOOP get_data;
CLOSE Cursordatos;
END BLOCK2;


END LOOP get_inter;
CLOSE Cursorcod;

END



como ves en "idintervencion" saco mas o menos el id encuestas con este ide hago busqueda de las respuestas de esa encuestas transformarlas en respuestas que puedan entender usuarios
por favor Maestrito una gauchadita ......... te envio el scrip de la tabla [URL="https://onedrive.live.com/?cid=46D0F38DACC13C05&id=46D0F38DACC13C05!219"]https://onedrive.live.com/?cid=46D0F38DACC13C05&id=46D0F38DACC13C05!219[/URL]que sale gracias de antemano Maestro

Última edición por orteloco; 20/08/2014 a las 11:17