PDA

Ver la Versión Completa : Como hacer una instruccion SQL que se basa en otras sql


JoAnCa
06-09-2010, 17:28:41
Hola a todos
Pues sucede que estoy migrando una BD de Access para MySQL, y me encontre con una dificultad que no se como solucionarla
Tal vez la solucion que use en access no fue la mas indicada, pero me resolvia el problema
El problema es que tengo una tabla donde en un campo se selecciona el tipo de PC (De Escritorio, Servidor o Portatil), y en un informe se hace un resumen donde se cuentan la cantidad de cada uno de ellos
La solucion que di en access fue:
- Crear una consulta filtrando por Servidores, otra basada en esa para totalizar la cantidad
- (y lo mismo para los otros tipos)
- Y otra consulta basada en esas 3, mas otros datos de la tabla para hacer el Informe

Pero cuando lo voy a hacer en MySQL, eso de las consultas anidadas me dejo "en blanco"

Es posible que lo que haya hecho es una "chapuza", pero agradeciaria que me indicaran como hacerlo en MySQL, o si no, una forma mejor de hacer lo que quiero

JoAnCa
06-09-2010, 17:36:01
En Access solo se usaban dos tipos de PC, pero la filosofia es la misma

1ra Consulta: Para servidores Profesionales
SELECT Computadoras.IDCENTRO, Computadoras.Servidor
FROM Computadoras
WHERE (((Computadoras.Servidor)="Profesional"));


2da Consulta para Totalizarlos:
SELECT [cc _ServidoresProf].IDCENTRO, Count([cc _ServidoresProf].Servidor) AS CuentaDeServidor
FROM [cc _ServidoresProf]
GROUP BY [cc _ServidoresProf].IDCENTRO;


3ra Consulta para PC servidores
SELECT Computadoras.IDCENTRO, Computadoras.Servidor
FROM Computadoras
WHERE (((Computadoras.Servidor)="PC Server"));


4ta Consulta para totalizarlos:SELECT [cc _ServidoresPC].IDCENTRO, Count([cc _ServidoresPC].Servidor) AS CuentaDeServidor
FROM [cc _ServidoresPC]
GROUP BY [cc _ServidoresPC].IDCENTRO;


Y la 5ta que lo resume todo:
SELECT Entidades.CodEnt, Entidades.NombreEntidad, Centros.IdCentros, Centros.NombreCentro, cc_CantServPC.CuentaDeServidor AS CantServPC, cc_CantServProf.CuentaDeServidor AS CantServProf
FROM Entidades INNER JOIN (
(Centros LEFT JOIN cc_CantServPC ON Centros.IdCentros = cc_CantServPC.IDCENTRO)
INNER JOIN cc_CantServProf ON Centros.IdCentros = cc_CantServProf.IDCENTRO)
ON Entidades.CodEnt = Centros.CODENT
GROUP BY Entidades.CodEnt, Entidades.NombreEntidad, Centros.IdCentros, Centros.NombreCentro, cc_CantServPC.CuentaDeServidor, cc_CantServProf.CuentaDeServidor;


Como ven parece un poco "enredado" al menos para mi :o

JoAnCa
06-09-2010, 20:16:33
El informe me debe salir así mas o menos:

Cant. Servidores
Centro Total de PC Profesional PC Server
-----------------------------------------------------
Centro 1 30 2 2
Centro 2 25 1 1