Get all values 0 in mysql query

0

estimates,

I have a problem with a query because it does not show me some data with the query that I have shown me this table

and that table does not show me id_question 2,6,16,17 type 3,3,3,3 amount_response 0,0,0,0

The query that generates that is the following:

SELECT p.id_pregunta, tr.tipo, COUNT(r.id_respuesta) as cantidad_respuestas
FROM preguntas p
LEFT JOIN tipo_respuesta tr on p.id_pregunta = tr.id_pregunta
LEFT JOIN respuesta r on tr.id_tipo = r.id_tipo
LEFT JOIN form_alumnos f on r.id_form_alumno_fk = f.id_form_alumno
WHERE (f.cod_curso_alumno = '354945' AND f.anio = '2016' AND f.semestre = 'Primer' or cod_curso_alumno IS NULL or anio IS NULL or semestre IS NULL) 
AND (tr.tipo = '3')
GROUP BY p.id_pregunta, tr.tipo

and I need you to show that data in order to create an array of 21 and be able to create a graph with that data.

I will enclose the relationship of the tables

someone can guide me or help me how to get that data.

CREATE TABLE 'form_alumnos' (
  'id_form_alumno' int(11) NOT NULL,
  'cod_curso_alumno' int(11) NOT NULL,
  'anio_ingreso' int(4) NOT NULL,
  'ua' int(3) NOT NULL,
  'cursos' varchar(50) CHARACTER SET ucs2 COLLATE ucs2_spanish_ci NOT NULL,
  'seccion' int(11) NOT NULL,
  'anio' set('2015','2016','2017','2018','2019') NOT NULL,
  'semestre' set('Primer','Segundo') NOT NULL,
  'id_encuesta_for' int(11) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

--
-- Volcado de datos para la tabla 'form_alumnos'
--

INSERT INTO 'form_alumnos' ('id_form_alumno', 'cod_curso_alumno', 'anio_ingreso', 'ua', 'cursos', 'seccion', 'anio', 'semestre', 'id_encuesta_for') VALUES
(1, 342139, 2012, 53, 'IN1083C', 1, '2016', 'Primer', 1),
(2, 342139, 2011, 53, 'IN1083C', 1, '2016', 'Primer', 1),
(3, 342139, 2011, 53, 'IN1083C', 1, '2016', 'Primer', 1),
(4, 342139, 2011, 53, 'IN1083C', 1, '2016', 'Primer', 1),
(5, 342139, 2011, 53, 'IN1083C', 1, '2016', 'Primer', 1),
(6, 342139, 2011, 53, 'IN1083C', 1, '2016', 'Primer', 1),
(7, 354945, 2012, 54, 'IN1228C', 1, '2016', 'Primer', 1),
(8, 354945, 2012, 54, 'IN1228C', 1, '2016', 'Primer', 1),
(9, 354945, 2012, 54, 'IN1228C', 1, '2016', 'Primer', 1),
(10, 354945, 2012, 54, 'IN1228C', 1, '2016', 'Primer', 1),
(11, 354945, 2012, 54, 'IN1228C', 1, '2016', 'Primer', 1),
(12, 354945, 2012, 54, 'IN1228C', 1, '2016', 'Primer', 1),
(14, 354945, 2012, 54, 'IN1228C', 1, '2016', 'Primer', 1);

CREATE TABLE 'preguntas' (
  'id_pregunta' int(11) NOT NULL,
  'nombre' varchar(200) COLLATE utf8_spanish_ci NOT NULL,
  'id_dimension_p' int(11) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_spanish_ci;

--
-- Volcado de datos para la tabla 'preguntas'
--

INSERT INTO 'preguntas' ('id_pregunta', 'nombre', 'id_dimension_p') VALUES
(1, 'Trabajar en esta actividad me permitió poner en práctica conceptos teóricos vistos en clases en ésta u otras asignaturas.', 1),
(2, 'Pude apreciar la importancia de utilizar métodos y/o herramientas de la disciplina en el desarrollo de la actividad.', 1),
(3, 'Para entender el problema y proponer una solución tuve que buscar y analizar información de diferentes fuentes.', 2),
(4, 'Tuve la posibilidad de tomar decisiones y defenderlas ante mi equipo de trabajo.', 2),
(5, 'Para el éxito de la actividad de aprendizaje servicio tuve que trabajar de forma permanente y perseverar en el logro de los objetivos. ', 2),
(6, 'Esta actividad me ayudó a ser flexible y mejorar mi capacidad para adaptarme a los cambios.', 2),
(7, 'Trabajar en esta actividad me permitió identificar las fortalezas y debilidades de mis conocimientos técnicos.', 2),
(8, 'Esta actividad permitió darme cuenta de la importancia del autoaprendizaje en mi desarrollo profesional.', 2),
(9, 'Para el logro de los objetivos de la actividad  requerí gestionar de forma adecuada el tiempo y los recursos.', 2),
(10, 'Trabajar con la comunidad me permitió valorar la importancia del comportamiento ético en mi profesión.', 2),
(11, 'El desarrollo de esta actividad me fomentó mi compromiso con el respeto hacia los otros participantes.', 2),
(12, 'Trabajar con el socio comunitario me permitió vincularme con profesionales o personas de otras áreas y realidades.', 2),
(13, 'A través de esta actividad pude darme cuenta de la importancia de poder trabajar en equipo.', 3),
(14, 'A través de esta actividad pude mejorar mis competencias en comunicación oral y escrita.', 3),
(15, 'El uso de las tecnologías de información y comunicación (TIC’s) favoreció el logro de los objetivos de la actividad.', 3),
(16, 'Tener definidos roles y responsabilidades de los integrantes del equipo de trabajo, fue fundamental para el desarrollo de la actividad.', 4),
(17, 'El desarrollo de esta actividad permitió darme cuenta del impacto de mi disciplina en la sociedad y medioambiente.', 4),
(18, 'A través de esta actividad pude conocer diferentes culturas organizacionales.', 4),
(19, 'Pude entender las necesidades del socio comunitario y a partir de ellas definir metas.', 4),
(20, 'La planificación, control y evaluación del desarrollo de la actividad favoreció el logro de los objetivos.', 4),
(21, 'Esta actividad permitió desarrollar mi capacidad de emprender e innovar.', 4);

CREATE TABLE 'tipo_respuesta' (
  'id_tipo' int(11) NOT NULL,
  'id_pregunta' int(11) NOT NULL,
  'tipo' set('1','2','3','4','5') NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

--
-- Volcado de datos para la tabla 'tipo_respuesta'
--

INSERT INTO 'tipo_respuesta' ('id_tipo', 'id_pregunta', 'tipo') VALUES
(100, 20, '5'),
(99, 20, '4'),
(98, 20, '3'),
(97, 20, '2'),
(96, 20, '1'),
(95, 19, '5'),
(94, 19, '4'),
(93, 19, '3'),
(92, 19, '2'),
(91, 19, '1'),
(90, 18, '5'),
(89, 18, '4'),
(88, 18, '3'),
(87, 18, '2'),
(86, 18, '1'),
(85, 17, '5'),
(84, 17, '4'),
(83, 17, '3'),
(82, 17, '2'),
(81, 17, '1'),
(80, 16, '5'),
(79, 16, '4'),
(78, 16, '3'),
(77, 16, '2'),
(76, 16, '1'),
(75, 15, '5'),
(74, 15, '4'),
(73, 15, '3'),
(72, 15, '2'),
(71, 15, '1'),
(70, 14, '5'),
(69, 14, '4'),
(68, 14, '3'),
(67, 14, '2'),
(66, 14, '1'),
(65, 13, '5'),
(64, 13, '4'),
(63, 13, '3'),
(62, 13, '2'),
(61, 13, '1'),
(60, 12, '5'),
(59, 12, '4'),
(58, 12, '3'),
(57, 12, '2'),
(56, 12, '1'),
(55, 11, '5'),
(54, 11, '4'),
(53, 11, '3'),
(52, 11, '2'),
(51, 11, '1'),
(50, 10, '5'),
(49, 10, '4'),
(48, 10, '3'),
(47, 10, '2'),
(46, 10, '1'),
(45, 9, '5'),
(44, 9, '4'),
(43, 9, '3'),
(42, 9, '2'),
(41, 9, '1'),
(40, 8, '5'),
(39, 8, '4'),
(38, 8, '3'),
(37, 8, '2'),
(36, 8, '1'),
(35, 7, '5'),
(34, 7, '4'),
(33, 7, '3'),
(32, 7, '2'),
(31, 7, '1'),
(30, 6, '5'),
(29, 6, '4'),
(28, 6, '3'),
(27, 6, '2'),
(26, 6, '1'),
(25, 5, '5'),
(24, 5, '4'),
(23, 5, '3'),
(22, 5, '2'),
(21, 5, '1'),
(20, 4, '5'),
(19, 4, '4'),
(18, 4, '3'),
(17, 4, '2'),
(16, 4, '1'),
(15, 3, '5'),
(14, 3, '4'),
(13, 3, '3'),
(12, 3, '2'),
(11, 3, '1'),
(10, 2, '5'),
(9, 2, '4'),
(8, 2, '3'),
(7, 2, '2'),
(6, 2, '1'),
(5, 1, '5'),
(4, 1, '4'),
(3, 1, '3'),
(2, 1, '2'),
(1, 1, '1'),
(105, 21, '5'),
(104, 21, '4'),
(103, 21, '3'),
(102, 21, '2'),
(101, 21, '1');

CREATE TABLE 'respuesta' (
  'id_respuesta' int(11) NOT NULL,
  'id_tipo' int(11) NOT NULL,
  'id_form_alumno_fk' int(11) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

--
-- Volcado de datos para la tabla 'respuesta'
--

INSERT INTO 'respuesta' ('id_respuesta', 'id_tipo', 'id_form_alumno_fk') VALUES
(1, 4, 1),
(2, 9, 1),
(3, 14, 1),
(4, 19, 1),
(5, 21, 1),
(6, 29, 1),
(7, 34, 1),
(8, 39, 1),
(9, 43, 1),
(10, 49, 1),
(11, 54, 1),
(12, 56, 1),
(13, 64, 1),
(14, 69, 1),
(15, 75, 1),
(16, 78, 1),
(17, 85, 1),
(18, 89, 1),
(19, 94, 1),
(20, 99, 1),
(21, 103, 1),
(22, 4, 2),
(23, 8, 2),
(24, 14, 2),
(25, 19, 2),
(26, 23, 2),
(27, 28, 2),
(28, 34, 2),
(29, 39, 2),
(30, 44, 2),
(31, 49, 2),
(32, 54, 2),
(33, 58, 2),
(34, 64, 2),
(35, 69, 2),
(36, 74, 2),
(37, 79, 2),
(38, 83, 2),
(39, 88, 2),
(40, 93, 2),
(41, 99, 2),
(42, 103, 2),
(43, 5, 3),
(44, 10, 3),
(45, 15, 3),
(46, 20, 3),
(47, 24, 3),
(48, 30, 3),
(49, 34, 3),
(50, 40, 3),
(51, 45, 3),
(52, 50, 3),
(53, 55, 3),
(54, 60, 3),
(55, 65, 3),
(56, 70, 3),
(57, 75, 3),
(58, 80, 3),
(59, 85, 3),
(60, 90, 3),
(61, 95, 3),
(62, 100, 3),
(63, 105, 3),
(64, 4, 4),
(65, 10, 4),
(66, 14, 4),
(67, 20, 4),
(68, 25, 4),
(69, 30, 4),
(70, 35, 4),
(71, 39, 4),
(72, 44, 4),
(73, 50, 4),
(74, 55, 4),
(75, 59, 4),
(76, 65, 4),
(77, 69, 4),
(78, 74, 4),
(79, 79, 4),
(80, 84, 4),
(81, 89, 4),
(82, 95, 4),
(83, 100, 4),
(84, 105, 4),
(85, 5, 5),
(86, 10, 5),
(87, 14, 5),
(88, 20, 5),
(89, 25, 5),
(90, 29, 5),
(91, 34, 5),
(92, 39, 5),
(93, 44, 5),
(94, 50, 5),
(95, 54, 5),
(96, 59, 5),
(97, 64, 5),
(98, 69, 5),
(99, 75, 5),
(100, 79, 5),
(101, 84, 5),
(102, 90, 5),
(103, 94, 5),
(104, 99, 5),
(105, 105, 5),
(106, 5, 6),
(107, 10, 6),
(108, 15, 6),
(109, 20, 6),
(110, 25, 6),
(111, 30, 6),
(112, 35, 6),
(113, 40, 6),
(114, 45, 6),
(115, 50, 6),
(116, 55, 6),
(117, 60, 6),
(118, 65, 6),
(119, 70, 6),
(120, 75, 6),
(121, 80, 6),
(122, 85, 6),
(123, 89, 6),
(124, 94, 6),
(125, 99, 6),
(126, 104, 6),
(127, 4, 7),
(128, 9, 7),
(129, 14, 7),
(130, 19, 7),
(131, 24, 7),
(132, 29, 7),
(133, 34, 7),
(134, 39, 7),
(135, 43, 7),
(136, 49, 7),
(137, 54, 7),
(138, 58, 7),
(139, 64, 7),
(140, 69, 7),
(141, 74, 7),
(142, 79, 7),
(143, 84, 7),
(144, 89, 7),
(145, 94, 7),
(146, 99, 7),
(147, 103, 7),
(148, 5, 8),
(149, 10, 8),
(150, 15, 8),
(151, 20, 8),
(152, 25, 8),
(153, 30, 8),
(154, 35, 8),
(155, 40, 8),
(156, 45, 8),
(157, 50, 8),
(158, 55, 8),
(159, 60, 8),
(160, 65, 8),
(161, 70, 8),
(162, 75, 8),
(163, 80, 8),
(164, 84, 8),
(165, 89, 8),
(166, 95, 8),
(167, 100, 8),
(168, 105, 8),
(169, 4, 9),
(170, 9, 9),
(171, 14, 9),
(172, 18, 9),
(173, 24, 9),
(174, 29, 9),
(175, 34, 9),
(176, 39, 9),
(177, 44, 9),
(178, 49, 9),
(179, 55, 9),
(180, 59, 9),
(181, 65, 9),
(182, 69, 9),
(183, 74, 9),
(184, 79, 9),
(185, 84, 9),
(186, 89, 9),
(187, 95, 9),
(188, 99, 9),
(189, 104, 9),
(190, 4, 10),
(191, 10, 10),
(192, 14, 10),
(193, 20, 10),
(194, 25, 10),
(195, 29, 10),
(196, 35, 10),
(197, 39, 10),
(198, 44, 10),
(199, 49, 10),
(200, 54, 10),
(201, 58, 10),
(202, 64, 10),
(203, 70, 10),
(204, 75, 10),
(205, 80, 10),
(206, 84, 10),
(207, 88, 10),
(208, 93, 10),
(209, 99, 10),
(210, 104, 10),
(211, 5, 11),
(212, 10, 11),
(213, 14, 11),
(214, 19, 11),
(215, 25, 11),
(216, 30, 11),
(217, 34, 11),
(218, 39, 11),
(219, 45, 11),
(220, 49, 11),
(221, 55, 11),
(222, 59, 11),
(223, 65, 11),
(224, 69, 11),
(225, 74, 11),
(226, 80, 11),
(227, 84, 11),
(228, 88, 11),
(229, 94, 11),
(230, 99, 11),
(231, 103, 11),
(232, 5, 12),
(233, 10, 12),
(234, 14, 12),
(235, 19, 12),
(236, 23, 12),
(237, 29, 12),
(238, 33, 12),
(239, 40, 12),
(240, 44, 12),
(241, 50, 12),
(242, 55, 12),
(243, 59, 12),
(244, 64, 12),
(245, 68, 12),
(246, 74, 12),
(247, 79, 12),
(248, 84, 12),
(249, 87, 12),
(250, 95, 12),
(251, 99, 12),
(252, 102, 12),
(253, 5, 14),
(254, 10, 14),
(255, 15, 14),
(256, 20, 14),
(257, 25, 14),
(258, 30, 14),
(259, 35, 14),
(260, 40, 14),
(261, 45, 14),
(262, 50, 14),
(263, 55, 14),
(264, 60, 14),
(265, 65, 14),
(266, 69, 14),
(267, 75, 14),
(268, 80, 14),
(269, 84, 14),
(270, 89, 14),
(271, 95, 14),
(272, 100, 14),
(273, 105, 14);
    
asked by claudia24 27.11.2017 в 06:45
source

1 answer

0

The query seems less fictitious if we apply the relationships as you have them in the shared image.

The accuracy or otherwise of the results will depend on the data you have.

I created the tables that were missing: encuesta , dimension and I added data ad libitum .

In the end I leave the link for you to do tests.

In the query I have removed the NULL forced that you wanted to evaluate. If the design is OK, the use of LEFT JOIN will give you NULL if any condition of JOIN is not met.

If this does not solve your problem, then you must clearly explain what your program intends and the design could be reviewed.

The query written like this:

SELECT  
p.id_pregunta, 
tr.tipo, 
f.cod_curso_alumno, 
COUNT(r.id_respuesta) as cantidad_respuestas
FROM form_alumnos f 
LEFT JOIN encuesta e ON f.id_encuesta_for=e.id_encuesta 
LEFT JOIN dimension d ON e.id_encuesta = e.id_encuesta 
LEFT JOIN preguntas p ON d.id_dimension = p.id_dimension_p 
LEFT JOIN tipo_respuesta tr on p.id_pregunta = tr.id_pregunta
LEFT JOIN respuesta r on tr.id_tipo = r.id_tipo
WHERE  (f.cod_curso_alumno = '354945' AND f.anio = '2016' AND f.semestre = 'Primer') 
AND (tr.tipo = '3') 
GROUP BY p.id_pregunta, r.id_tipo;

Throw this result:

id_pregunta     tipo    cod_curso_alumno    cantidad_respuestas
1               3       354945              0
2               3       354945              7
3               3       354945              0
4               3       354945              7
5               3       354945              14
6               3       354945              7
7               3       354945              7
8               3       354945              0
9               3       354945              14
10              3       354945              0
11              3       354945              0
12              3       354945              21
13              3       354945              0
14              3       354945              7
15              3       354945              0
16              3       354945              7
17              3       354945              7
18              3       354945              21
19              3       354945              14
20              3       354945              0
21              3       354945              28

From the following link you can do tests if you wish: VIEW CODE DEMO

    
answered by 28.11.2017 в 00:35