Hola.
Tengo Estas Dos tablas
CREATE TABLE `persona` (
`idPersona` varchar(30) NOT NULL,
`Nombre` varchar(45) DEFAULT NULL,
`ApPaterno` varchar(45) DEFAULT NULL,
`ApMaterno` varchar(45) DEFAULT NULL,
`Carnet` varchar(15) DEFAULT NULL,
PRIMARY KEY (`idPersona`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE `atributopersona` (
`Titulo` varchar(30) DEFAULT NULL,
`Valor` varchar(30) DEFAULT NULL,
`idPersona` varchar(30) NOT NULL,
KEY `fk_AtributoPersona_Persona1_idx` (`idPersona`),
CONSTRAINT `fk_AtributoPersona_Persona1` FOREIGN KEY (`idPersona`) REFERENCES `persona` (`idPersona`) ON DELETE NO ACTION ON UPDATE NO ACTION
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
----------------
Si llenamos correctamente al menos 2 campos del mismo atributo para 4 diferentes personas... Digamos
idPersona|Nombre ...
1| Alguien
2| Alguien mas
Y Atributos
Titulo|Valor| idPersona
Tel|455454|1
Tel|665652|2
Resulta Que hice una consulta medio extraña, pero resulto al final, Ahora el problema es que los encabezados se repiten para cada Row persona.
Aqui el Script.
SET @sql = NULL;
SELECT
GROUP_CONCAT( CONCAT(
'MAX(IF(pa.valor = ''',
Valor,
''', pa.valor, NULL)) AS ',
Titulo
)
) INTO @sql
FROM atributopersona;
SET @sql = CONCAT('SELECT p.idPersona
, p.Nombre
, p.ApPaterno, p.ApMaterno, p.Carnet,
', @sql, '
FROM persona p
LEFT JOIN atributopersona AS pa
ON p.idPersona = pa.idPersona
GROUP BY p.idPersona');
PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
Alguien por favor me puede dar una solucion para que no se creen las columnas para cada registro ??.
GRACIAS !!!!
Las cosas difíciles traen premio ...
Luis Delfin Briceño Gordy
Un loco de por ahi.
mail:
bibincito@gmail.com