Ir al contenido


Foto

Como hacer una instruccion SQL que se basa en otras sql


  • Por favor identifícate para responder
21 respuestas en este tema

#21 poliburro

poliburro

    Advanced Member

  • Administrador
  • 4.945 mensajes
  • LocationMéxico

Escrito 08 septiembre 2010 - 12:33

ok esta es la consulta equivalente mi estimado amigo.



sql
  1.     SELECT Entidades.CodEnt, Entidades.NombreEntidad, Centros.IdCentro,
  2.             Centro.NombreCentro, Sumario.Profesional, Sumario.PCSERVER
  3.       FROM Centros
  4.   LEFT JOIN (
  5.               SELECT IDCENTRO, Servidor,
  6.                       SUM(CASE WHEN Servidor="Profesional" THEN 1 ELSE 0 END) AS Profesional,
  7.                       SUM(CASE WHEN Servidor="PC Server" THEN 1 ELSE 0 END) AS PCSERVER
  8.                 FROM Computadoras
  9.             GROUP BY IDCENTRO, Servidor
  10.             ) AS Sumario
  11.         ON Centros.IdCentro = Sumario.IdCentro
  12. INNER JOIN Entidades
  13.         ON Centros.CodEnt = Entidades.CodEnt


  • 0

#22 JoAnCa

JoAnCa

    Advanced Member

  • Miembro Platino
  • PipPipPip
  • 758 mensajes
  • LocationPinar del Río, Cuba

Escrito 10 septiembre 2010 - 06:21

Hola Poliburro
Con tu consulta me cuenta bien, pero me repite el registro 3 veces (una por cada tipo de servidor)

Pero basándome en la idea y forma de hacerla que usaste, al final ya resolví el problema y funciona justo como deseaba  (y)
Con un poco de modificaciones al final me quedó así la esperada "consulta compleja":



sql
  1. SELECT Entidades.CodEnt, Entidades.NombreEntidad, Centros.IdCentros, Centros.NombreCentro, Computadoras.IDCENTRO, COUNT(Computadoras.Denom) AS CuentaDeDenom, cc_PCenRedTotal.CuentaDeEnRed, cc_CantServPC.CuentaDeServidor AS CantServPC, cc_CantServProf.CuentaDeServidor AS CantServProf, Conectividad.EnlaceConmutado, Conectividad.VelocEnlArrend, Conectividad.CorreoNac, Conectividad.CorreoInter, Conectividad.UserNavNac, Conectividad.UserInternet, Conectividad.AccRemCorreo, Conectividad.AccRemInternet, Conectividad.URL
  2. FROM Entidades
  3.  
  4. INNER JOIN (((((Centros LEFT JOIN [SELECT cc_ServidoresPC.IDCENTRO, COUNT(cc_ServidoresPC.Servidor) AS CuentaDeServidor
  5.             FROM (SELECT Computadoras.IDCENTRO, Computadoras.Servidor
  6.                   FROM Computadoras
  7.                   WHERE (((Computadoras.Servidor)="PC Server")))
  8.                 AS cc_ServidoresPC
  9.                 GROUP BY cc_ServidoresPC.IDCENTRO]. AS cc_CantServPC ON Centros.IdCentros = cc_CantServPC.IDCENTRO)
  10.  
  11.             LEFT JOIN [SELECT cc_ServidoresProf.IDCENTRO, COUNT(cc_ServidoresProf.Servidor) AS CuentaDeServidor
  12.             FROM (SELECT Computadoras.IDCENTRO, Computadoras.Servidor
  13.                   FROM Computadoras
  14.                   WHERE (((Computadoras.Servidor)="Profesional"))) AS cc_ServidoresProf
  15.                   GROUP BY cc_ServidoresProf.IDCENTRO]. AS cc_CantServProf ON Centros.IdCentros = cc_CantServProf.IDCENTRO)
  16.  
  17.             LEFT JOIN [SELECT cc_PCenRed.IDCENTRO, COUNT(cc_PCenRed.EnRed) AS CuentaDeEnRed
  18.             FROM (SELECT Computadoras.IDCENTRO, Computadoras.EnRed
  19.                   FROM Computadoras
  20.                   WHERE (((Computadoras.EnRed)=-1))) AS cc_PCenRed
  21.                   GROUP BY cc_PCenRed.IDCENTRO]. AS cc_PCenRedTotal ON Centros.IdCentros = cc_PCenRedTotal.IDCENTRO)
  22.  
  23. LEFT JOIN Computadoras ON Centros.IdCentros = Computadoras.IDCENTRO)
  24.  
  25. LEFT JOIN Conectividad ON Centros.IdCentros = Conectividad.IdCentros) ON Entidades.CodEnt = Centros.CODENT
  26.  
  27. GROUP BY Entidades.CodEnt, Entidades.NombreEntidad, Centros.IdCentros, Centros.NombreCentro, Computadoras.IDCENTRO, cc_PCenRedTotal.CuentaDeEnRed, cc_CantServPC.CuentaDeServidor, cc_CantServProf.CuentaDeServidor, Conectividad.EnlaceConmutado, Conectividad.VelocEnlArrend, Conectividad.CorreoNac, Conectividad.CorreoInter, Conectividad.UserNavNac, Conectividad.UserInternet, Conectividad.AccRemCorreo, Conectividad.AccRemInternet, Conectividad.URL
  28. ORDER BY Entidades.CodEnt, Centros.IdCentros;


  • 0