Estimados amigos, me encuentro por acá nuevamente reabriendo este post ya que en el anterior creo que no me explique del todo bien. Estoy realizando un sistema de encuestas, en donde cada pregunta tiene 4 posibles respuesta, las preguntas se dividen por grupo y subgrupos. Al totalizar la encuesta debo contabilizar el numero de respuesta para cada pregunta. Ejemplo: la pregunta#1 del grupo efectividad, subgrupo enfoque, tuvo en la opción 1 (8 respuestas), opción 2 (4), opción 3(2), opción 4(0). El problema surge cuando hago la consulta puedo conocer cuantas respuestas tengo de cada una pero no veo como conocer la opción a la cual nadie respondió.
Código SQL:
Ver originalCREATE TABLE IF NOT EXISTS `pregunta` (
`idpregunta` INT(11) NOT NULL AUTO_INCREMENT,
`idencuesta` INT(11) NOT NULL,
`pregunta` text NOT NULL,
`p1` text NOT NULL,
`p2` text NOT NULL,
`p3` text NOT NULL,
`p4` text NOT NULL,
`grupo` tinyint(4) NOT NULL,
`subgrupo` tinyint(4) NOT NULL,
`activo` tinyint(4) NOT NULL,
PRIMARY KEY (`idpregunta`),
KEY `idpregunta` (`idpregunta`),
KEY `idencuesta` (`idencuesta`) );
CREATE TABLE IF NOT EXISTS `respuesta` (
`idrespuesta` INT(11) NOT NULL AUTO_INCREMENT,
`idcliente` INT(11) NOT NULL,
`idencuesta` INT(11) NOT NULL,
`idcolaborador` INT(11) NOT NULL,
`idpregunta` INT(11) NOT NULL,
`respuesta` INT(11) NOT NULL,
PRIMARY KEY (`idrespuesta`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1472 ;
CREATE TABLE IF NOT EXISTS `grupo` (
`idgrupo` INT(6) NOT NULL AUTO_INCREMENT,
`grupo` VARCHAR(100) NOT NULL,
`activo` tinytext NOT NULL,
PRIMARY KEY (`idgrupo`),
KEY `idgrupo` (`idgrupo`) ) ;
INSERT INTO `grupo` (`idgrupo`, `grupo`, `activo`) VALUES
(1, 'Efectividad', '1'),
(2, 'Confianza', '1'),
(3, 'Modelaje', '1'),
(4, 'Comunicación', '1'),
(5, 'Adecuación del Estilo', '1'),
(6, 'Autoliderazgo', '1');
CREATE TABLE IF NOT EXISTS `subgrupo` (
`idsub` INT(11) NOT NULL AUTO_INCREMENT,
`idgrupo` tinyint(4) NOT NULL,
`sub` VARCHAR(100) NOT NULL,
`activo` tinyint(4) NOT NULL,
PRIMARY KEY (`idsub`),
UNIQUE KEY `idsub` (`idsub`)) ;
--
-- Volcado de datos para la tabla `subgrupo`
--
INSERT INTO `subgrupo` (`idsub`, `idgrupo`, `sub`, `activo`) VALUES
(1, 1, 'Enfoque', 1),
(2, 1, 'Responsabilidad', 1),
(3, 1, 'Involucramiento', 1),
(4, 1, 'Consecuencia', 1),
(5, 2, 'Capaz', 1),
(6, 2, 'Creible', 1),
(7, 2, 'Conectado', 1),
(8, 2, 'Consistente', 1),
(9, 2, 'Satisfacción', 1),
(10, 3, 'Ninguno', 1),
(11, 4, 'Ninguno', 1),
(12, 5, 'Persona a Persona', 1),
(13, 5, 'Equipo', 1),
(14, 6, 'Autonomía', 1),
(15, 6, 'Fuentes de Influencia', 1);
Basicamente quisiera obtener esto
Código SQL:
Ver original+-----------+-----------+-----------------------+-----------------------+----------------+
| Pregunta | respuesta | grup | sub | totalRespuesta |
+-----------+-----------+-----------------------+-----------------------+----------------+
| 1 | 1 | Efectividad | Enfoque | 2 |
| 1 | 2 | Efectividad | Enfoque | 1 |
| 1 | 3 | Efectividad | Enfoque | 1 |
| 1 | 4 | Efectividad | Enfoque | 0 |
| 2 | 1 | Efectividad | Enfoque | 1 |
| 2 | 2 | Efectividad | Enfoque | 2 |
| 2 | 3 | Efectividad | Enfoque | 1 |
| 2 | 4 | Efectividad | Enfoque | 0 |
| 3 | 1 | Efectividad | Responsabilidad | 2 |
| 3 | 2 | Efectividad | Responsabilidad | 1 |
| 3 | 3 | Efectividad | Responsabilidad | 0 |
| 3 | 4 | Efectividad | Responsabilidad | 1 |
| 4 | 1 | Efectividad | Responsabilidad | 1 |
| 4 | 2 | Efectividad | Responsabilidad | 1 |
| 4 | 3 | Efectividad | Responsabilidad | 0 |
| 4 | 4 | Efectividad | Responsabilidad | 2 |
Mi mayor acercamiento ha sido esto
Código SQL:
Ver originalSELECT R.idpregunta, R.respuesta, COUNT( R.respuesta ) totalRespuesta, P.nsec, P.grupo, P.subgrupo, G.grupo AS grup, S.sub
FROM colaborador C
LEFT JOIN respuesta R ON C.idcol = R.idcolaborador
LEFT JOIN pregunta P ON P.idpregunta = R.idpregunta
LEFT JOIN grupo G ON G.idgrupo = P.grupo
LEFT JOIN subgrupo S ON S.idsub = P.subgrupo
WHERE R.idencuesta = '1'
AND `P`.`grupo` >0
obteniendo solamente esto
Código SQL:
Ver originalidpregunta respuesta totalRespuesta nsec grupo subgrupo grup sub
1 1 4 1 1 1 Efectividad Enfoque
2 2 2 2 1 1 Efectividad Enfoque
2 3 1 2 1 1 Efectividad Enfoque
2 1 1 2 1 1 Efectividad Enfoque
3 2 2 3 1 1 Efectividad Enfoque
3 3 1 3 1 1 Efectividad Enfoque
3 1 1 3 1 1 Efectividad Enfoque
4 2 2 4 1 1 Efectividad Enfoque
4 1 2 4 1 1 Efectividad Enfoque
5 1 2 5 1 2 Efectividad Responsabilidad
5 2 2 5 1 2 Efectividad Responsabilidad
6 1 1 6 1 2 Efectividad Responsabilidad
6 2 2 6 1 2 Efectividad Responsabilidad
6 4 1 6 1 2 Efectividad Responsabilidad
7 2 1 7 1 2 Efectividad Responsabilidad
7 1 3 7 1 2 Efectividad Responsabilidad
8 2 2 8 1 2 Efectividad Responsabilidad
8 1 2 8 1 2 Efectividad Responsabilidad
9 1 1 9 1 3 Efectividad Involucramiento
9 2 3 9 1 3 Efectividad Involucramiento
10 1 1 10 1 3 Efectividad Involucramiento
10 2 3 10 1 3 Efectividad Involucramiento
22 2 2 22 1 3 Efectividad Involucramiento
22 1 2 22 1 3 Efectividad Involucramiento
23 2 2 23 1 3 Efectividad Involucramiento
23 4 1 23 1 3 Efectividad Involucramiento
23 1 1 23 1 3 Efectividad Involucramiento
11 1 1 11 1 4 Efectividad Consecuencia
Mi Universo de encuestados en esta prueba son 4 personas, en el caso de la pregunta 1 las cuatro personas eligieron la primera opción por lo cual no puedo contabilizar 2, 3 y 4. Necesito obtenerlo para sacar porcentajes, Gracias por su ayuda