Ver Mensaje Individual
  #4 (permalink)  
Antiguo 01/04/2016, 09:50
Avatar de gnzsoloyo
gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Conocer totales bajo ciertas condiciones

Estás tratando de sumar conceptos que deben estar agrupados sin agruparlos.
Es tan simple como eso.
Cita:
Quisiera saber por programa cuantos SI vinieron y Cuantos NO y que valor suma los que si y los que No
En esa descripción lo que expresas es que necesitas saber cuántos SI y NO hay por cada programa diferente, y eso sólo ocurre cuando AGRUPAS.
El concepto de agrupación o agregación es de manual. Lo puedes encontrar en cualquier tutorial básico, sin necesidad de recurrir al manual de referencia:
MySQL Con Clase: Agrupar filas
Tema 4. Las consultas de resumen (II)
http://dev.mysql.com/doc/refman/5.7/...modifiers.html

En tu caso es simple:
Código SQL:
Ver original
  1. SELECT pr.descripcion_programa, SUM(IF(dg.asistenciad = 'Si', 1, 0)) Asistencia,
  2. SUM(IF(dg.asistenciad = 'No', 1, 0)) NoAsistencia, SUM(pr.valor) Total
  3. FROM tb_detalle_grupos dg
  4.     INNER JOIN tb_grupos gr ON  gr.tb_id_grupos=bdg.tb_id_grupos
  5.     INNER JOIN tb_programas pr ON dg.programas_id = pr.programas_id
  6. WHERE fecha BETWEEN '2016-03-01' AND '2016-03-12'
  7. GROUP BY pr.descripcion_programa ASC

Hay un par de puntos oscuros en tu post: 1) No se ve como se relaciona la tabla de programas con el resto, así que estoy haciendo una suposición; 2) No queda claro por qué sumas siempre el valor, aun cuando no hubo asistencia. ¿No deberías sumar solo a los asistentes?

Finalmente: No uses JOIN implícito, es ineficiente y puede generar errores de resultados si no se determina la relación. Y NUNCA lo uses sin especificar cuál es la forma en que se relacionan las tablas; te olvidaste de una y eso puede sacar resultados basura.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)