Ver Mensaje Individual
  #1 (permalink)  
Antiguo 15/04/2013, 16:42
danikene
 
Fecha de Ingreso: marzo-2007
Mensajes: 59
Antigüedad: 17 años, 2 meses
Puntos: 1
Es posible colocar 0 en una consulta si falta un valor?

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 original
  1. CREATE TABLE IF NOT EXISTS `pregunta` (
  2.       `idpregunta` INT(11) NOT NULL AUTO_INCREMENT,
  3.       `idencuesta` INT(11) NOT NULL,
  4.       `pregunta` text NOT NULL,
  5.       `p1` text NOT NULL,
  6.       `p2` text NOT NULL,
  7.       `p3` text NOT NULL,
  8.       `p4` text NOT NULL,
  9.       `grupo` tinyint(4) NOT NULL,
  10.       `subgrupo` tinyint(4) NOT NULL,
  11.       `activo` tinyint(4) NOT NULL,
  12.       PRIMARY KEY (`idpregunta`),
  13.       KEY `idpregunta` (`idpregunta`),
  14.       KEY `idencuesta` (`idencuesta`)  );
  15.      
  16.     CREATE TABLE IF NOT EXISTS `respuesta` (
  17.       `idrespuesta` INT(11) NOT NULL AUTO_INCREMENT,
  18.       `idcliente` INT(11) NOT NULL,
  19.       `idencuesta` INT(11) NOT NULL,
  20.       `idcolaborador` INT(11) NOT NULL,
  21.       `idpregunta` INT(11) NOT NULL,
  22.       `respuesta` INT(11) NOT NULL,
  23.       PRIMARY KEY (`idrespuesta`)
  24.     ) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=1472 ;
  25.      
  26.     CREATE TABLE IF NOT EXISTS `grupo` (
  27.       `idgrupo` INT(6) NOT NULL AUTO_INCREMENT,
  28.       `grupo` VARCHAR(100) NOT NULL,
  29.       `activo` tinytext NOT NULL,
  30.       PRIMARY KEY (`idgrupo`),
  31.       KEY `idgrupo` (`idgrupo`) ) ;
  32.      
  33.          
  34.     INSERT INTO `grupo` (`idgrupo`, `grupo`, `activo`) VALUES
  35.     (1, 'Efectividad', '1'),
  36.     (2, 'Confianza', '1'),
  37.     (3, 'Modelaje', '1'),
  38.     (4, 'Comunicación', '1'),
  39.     (5, 'Adecuación del Estilo', '1'),
  40.     (6, 'Autoliderazgo', '1');
  41.      
  42.      
  43.     CREATE TABLE IF NOT EXISTS `subgrupo` (
  44.       `idsub` INT(11) NOT NULL AUTO_INCREMENT,
  45.       `idgrupo` tinyint(4) NOT NULL,
  46.       `sub` VARCHAR(100) NOT NULL,
  47.       `activo` tinyint(4) NOT NULL,
  48.       PRIMARY KEY (`idsub`),
  49.       UNIQUE KEY `idsub` (`idsub`)) ;
  50.      
  51.     --
  52.     -- Volcado de datos para la tabla `subgrupo`
  53.     --
  54.      
  55.     INSERT INTO `subgrupo` (`idsub`, `idgrupo`, `sub`, `activo`) VALUES
  56.     (1, 1, 'Enfoque', 1),
  57.     (2, 1, 'Responsabilidad', 1),
  58.     (3, 1, 'Involucramiento', 1),
  59.     (4, 1, 'Consecuencia', 1),
  60.     (5, 2, 'Capaz', 1),
  61.     (6, 2, 'Creible', 1),
  62.     (7, 2, 'Conectado', 1),
  63.     (8, 2, 'Consistente', 1),
  64.     (9, 2, 'Satisfacción', 1),
  65.     (10, 3, 'Ninguno', 1),
  66.     (11, 4, 'Ninguno', 1),
  67.     (12, 5, 'Persona a Persona', 1),
  68.     (13, 5, 'Equipo', 1),
  69.     (14, 6, 'Autonomía', 1),
  70.     (15, 6, 'Fuentes de Influencia', 1);

Basicamente quisiera obtener esto
Código SQL:
Ver original
  1. +-----------+-----------+-----------------------+-----------------------+----------------+
  2. | Pregunta  | respuesta | grup                  | sub                   | totalRespuesta |
  3. +-----------+-----------+-----------------------+-----------------------+----------------+
  4. |         1 |         1 | Efectividad           | Enfoque               |              2 |
  5. |         1 |         2 | Efectividad           | Enfoque               |              1 |
  6. |         1 |         3 | Efectividad           | Enfoque               |              1 |
  7. |         1 |         4 | Efectividad           | Enfoque               |              0 |
  8. |         2 |         1 | Efectividad           | Enfoque               |              1 |
  9. |         2 |         2 | Efectividad           | Enfoque               |              2 |
  10. |         2 |         3 | Efectividad           | Enfoque               |              1 |
  11. |         2 |         4 | Efectividad           | Enfoque               |              0 |
  12. |         3 |         1 | Efectividad           | Responsabilidad       |              2 |
  13. |         3 |         2 | Efectividad           | Responsabilidad       |              1 |
  14. |         3 |         3 | Efectividad           | Responsabilidad       |              0 |
  15. |         3 |         4 | Efectividad           | Responsabilidad       |              1 |
  16. |         4 |         1 | Efectividad           | Responsabilidad       |              1 |
  17. |         4 |         2 | Efectividad           | Responsabilidad       |              1 |
  18. |         4 |         3 | Efectividad           | Responsabilidad       |              0 |
  19. |         4 |         4 | Efectividad           | Responsabilidad       |              2 |

Mi mayor acercamiento ha sido esto
Código SQL:
Ver original
  1. SELECT R.idpregunta, R.respuesta, COUNT( R.respuesta ) totalRespuesta, P.nsec, P.grupo, P.subgrupo, G.grupo AS grup, S.sub
  2. FROM colaborador C
  3. LEFT JOIN respuesta R ON C.idcol = R.idcolaborador
  4. LEFT JOIN pregunta P ON P.idpregunta = R.idpregunta
  5. LEFT JOIN grupo G ON G.idgrupo = P.grupo
  6. LEFT JOIN subgrupo S ON S.idsub = P.subgrupo
  7. WHERE R.idencuesta = '1'
  8. AND `P`.`grupo` >0
obteniendo solamente esto
Código SQL:
Ver original
  1. idpregunta  respuesta   totalRespuesta  nsec    grupo   subgrupo    grup            sub
  2. 1                1       4              1       1       1           Efectividad     Enfoque
  3. 2                2       2              2       1       1           Efectividad     Enfoque
  4. 2                3       1              2       1       1           Efectividad     Enfoque
  5. 2                1       1              2       1       1           Efectividad     Enfoque
  6. 3                2       2              3       1       1           Efectividad     Enfoque
  7. 3                3       1              3       1       1           Efectividad     Enfoque
  8. 3                1       1              3       1       1           Efectividad     Enfoque
  9. 4                2       2              4       1       1           Efectividad     Enfoque
  10. 4                1       2              4       1       1           Efectividad     Enfoque
  11. 5                1       2              5       1       2           Efectividad     Responsabilidad
  12. 5                2       2              5       1       2           Efectividad     Responsabilidad
  13. 6                1       1              6       1       2           Efectividad     Responsabilidad
  14. 6                2       2              6       1       2           Efectividad     Responsabilidad
  15. 6                4       1              6       1       2           Efectividad     Responsabilidad
  16. 7                2       1              7       1       2           Efectividad     Responsabilidad
  17. 7                1       3              7       1       2           Efectividad     Responsabilidad
  18. 8                2       2              8       1       2           Efectividad     Responsabilidad
  19. 8                1       2              8       1       2           Efectividad     Responsabilidad
  20. 9                1       1              9       1       3           Efectividad     Involucramiento
  21. 9                2       3              9       1       3           Efectividad     Involucramiento
  22. 10               1       1              10      1       3           Efectividad     Involucramiento
  23. 10               2       3              10      1       3           Efectividad     Involucramiento
  24. 22               2       2              22      1       3           Efectividad     Involucramiento
  25. 22               1       2              22      1       3           Efectividad     Involucramiento
  26. 23               2       2              23      1       3           Efectividad     Involucramiento
  27. 23               4       1              23      1       3           Efectividad     Involucramiento
  28. 23               1       1              23      1       3           Efectividad     Involucramiento
  29. 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