Ver Mensaje Individual
  #2 (permalink)  
Antiguo 13/03/2014, 04:16
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: 16 años, 7 meses
Puntos: 2658
Respuesta: Count (*) Left Join

Partamos de dos detlles:
1) COUNT() cuenta los registros de una consulta que cumplan con la condición de no ser NULL.
Cuando pones COUNT(*) cuenta los registros devueltos, pero cuanto pones COUNT(campo), cuenta los registros donde "campo" no es NULL. No es lo mismo.

2) LEFT JOIN devuelve los todos registros de la primera tabla tengan o no coincidencia con los de la segunda. Por ello se dice que el orden de los factores en base de datos SI altera el producto.
En este caso, la sintaxis varía de acuerdo a lo que quieras consultar: ¿Las actividades contando clientes , o las actividades DE los clientes?
Su suponemos que no hay actividades sin clientes, en tu consulta el LEFT JOIN devolvería lo mismo que un INNER JOIN.

Si quieres clientes por actividad:
Código SQL:
Ver original
  1. SELECT a.Activacion, a.Actividad, a.Url, a.NomActividad, COUNT(c1.Actividades) TotalC1, COUNT(c2.Actividades) TotalC2, SUM(COUNT(c1.Actividades) + COUNT(c2.Actividades)) total
  2. FROM actividades a
  3. LEFT JOIN clientes c1 ON a.Actividad = c1.Actividades
  4. LEFT JOIN clientes c2 ON a.Actividad = c2.Actividades2
  5. WHERE a.Activacion = 1
  6. GROUP BY a.Actividad ASC
Mas o menos por acá...
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)