Ver Mensaje Individual
  #7 (permalink)  
Antiguo 18/08/2011, 16:09
Avatar de vgonga1986
vgonga1986
 
Fecha de Ingreso: marzo-2008
Ubicación: País de Pandereta
Mensajes: 1.021
Antigüedad: 16 años, 11 meses
Puntos: 253
Respuesta: Doble Count en un Select con 3 Tablas

Claro que se puede hacer en un único select, pero con subselect. Realmente creo que la subconsulta que tienes ahí te sobra, esto es lo mismo que tienes ahí:
Código MySQL:
Ver original
  1. SELECT sp.tCodEstatus AS Estatus, sp.tCodPerfil, count(su.tCodPerfil) AS NumeroUsuarios, count(ss.tCodPerfil) AS NumeroSecciones
  2. FROM sisPerfiles sp
  3.    LEFT JOIN sisUsuarios su ON sp.tCodPerfil = su.tCodPerfil
  4.    LEFT JOIN sisSeccionesPerfiles ss ON sp.tCodPerfil = ss.tCodPerfil
  5. WHERE sp.tCodEstatus <> 'EL'
  6. GROUP BY sp.tCodEstatus, sp.tCodPerfil

Sólo para sacar el número de usuarios:
Código MySQL:
Ver original
  1. SELECT sp.tCodEstatus AS Estatus, sp.tCodPerfil, count(su.tCodPerfil) AS NumeroUsuarios
  2. FROM sisPerfiles sp
  3.    LEFT JOIN sisUsuarios su ON sp.tCodPerfil = su.tCodPerfil
  4. WHERE sp.tCodEstatus <> 'EL'
  5. GROUP BY sp.tCodEstatus, sp.tCodPerfil

Sólo para sacar el número de secciones:
Código MySQL:
Ver original
  1. SELECT sp.tCodEstatus AS Estatus, sp.tCodPerfil, count(ss.tCodPerfil) AS NumeroSecciones
  2. FROM sisPerfiles sp
  3.    LEFT JOIN sisSeccionesPerfiles ss ON sp.tCodPerfil = ss.tCodPerfil
  4. WHERE sp.tCodEstatus <> 'EL'
  5. GROUP BY sp.tCodEstatus, sp.tCodPerfil

Ambos:
Código MySQL:
Ver original
  1. SELECT NU.Estatus, NU.tCodPerfil, NU.NumeroUsuarios, NS.NumeroSecciones
  2.    (SELECT sp.tCodEstatus AS Estatus, sp.tCodPerfil, count(su.tCodPerfil) AS NumeroUsuarios
  3.    FROM sisPerfiles sp
  4.       LEFT JOIN sisUsuarios su ON sp.tCodPerfil = su.tCodPerfil
  5.    WHERE sp.tCodEstatus <> 'EL'
  6.    GROUP BY sp.tCodEstatus, sp.tCodPerfil) NU,
  7.    (SELECT sp.tCodEstatus AS Estatus, sp.tCodPerfil, count(ss.tCodPerfil) AS NumeroSecciones
  8.    FROM sisPerfiles sp
  9.       LEFT JOIN sisSeccionesPerfiles ss ON sp.tCodPerfil = ss.tCodPerfil
  10.    WHERE sp.tCodEstatus <> 'EL'
  11.    GROUP BY sp.tCodEstatus, sp.tCodPerfil) NS
  12. WHERE NU.tCodPerfil = NS.tCodPerfil

No lo he probado porque no tengo tiempo, pero creo seguro que las dos por separado funcionan, si la unión de las dos no funciona prueba de distintas formas, pero la idea va por ahí.

Un saludo.
__________________
¿Alguna pregunta, duda, acotación, nota, cuestión, reparo, comentario, demanda, crítica, interpretación, objeción, interrogante, discrepancia, observación, réplica, disquisición, apostilla o exégesis?