Ver Mensaje Individual
  #1 (permalink)  
Antiguo 06/12/2010, 13:11
oscarbt
 
Fecha de Ingreso: abril-2009
Ubicación: Colombia
Mensajes: 949
Antigüedad: 15 años
Puntos: 27
Puedo hacer un doble group by utilizando una subconsulta?

Buenas a todos, necesito hacerle una consulta a una base de datos que consiste en lo siguiente:

Mostrar todas las empresas agrupadas por ciudad, es decir que me salga:

Ciudad 1 Empresa 1
Ciudad 1 Empresa 2
Ciudad 1 Empresa 3
Ciudad 2 Empresa 4
Ciudad 2 Empresa 5

O ciudad 1 Empresa 1 - Empresa 2 - Empresa 3

Hasta aca la consulta la hago bien, pero ademas de esto, debo mostrar el listado de personas que trabajan en cada una de las empresas, entonces asumo que la consulta me debe arrojar los resultados como este:

Ciudad 1 Empresa 1 Persona 1
Ciudad 1 Empresa 1 Persona 2
Ciudad 1 Empresa 1 Persona 3
Ciudad 1 Empresa 2 Persona 4

Y no he podido hacer la consulta para este caso:
Las tablas que manejo son:

TABLA CIUDAD

Código SQL:
Ver original
  1. /* Table: CIUDAD                                             */
  2.  
  3. CREATE TABLE EMPRESA
  4. (
  5.    COD_CIU              INT NOT NULL,
  6.    NOM_CIU         VARCHAR(30),
  7.    
  8.    PRIMARY KEY (COD_CIU)
  9. );

TABLA DE EGRESADOS
Código SQL:
Ver original
  1. /* Tabla: EGRESADO (PERSONAS)                                              */
  2.  
  3. CREATE TABLE EGRESADO
  4. (
  5.    NUM_CED_EGR          INT NOT NULL,
  6.    APE_EGR              CHAR(25),
  7.    FEC_NAC_EGR          DATE,
  8.    EMA_EGR              VARCHAR(70),
  9.    PRIMARY KEY (NUM_CED_EGR)
  10. );

TABLA EMPRESAS

Código SQL:
Ver original
  1. /* Table: EMPRESA                                               */
  2.  
  3. CREATE TABLE EMPRESA
  4. (
  5.    NIT_EMP              INT NOT NULL,
  6.    RAZ_SOC_EMP          VARCHAR(50),
  7.    DIR_EMP              VARCHAR(70),
  8.    EMA_EMP              VARCHAR(70),
  9.    REP_LEG_EMP          CHAR(80),
  10.    PRIMARY KEY (NIT_EMP)
  11. );

Y una tabla hija que sale de las dos tablas anteriores y la denomino
EMPRESAS_TRABAJO_EGRESADO, donde guardo cada empresa con cada egresado

Código SQL:
Ver original
  1. /* Table: EMPRESAS_TRABAJO_EGRESADO                             */
  2.  
  3. CREATE TABLE EMPRESAS_TRABAJO_EGRESADO
  4. (
  5.    NUM_CED_EGR          INT NOT NULL,
  6.    NIT_EMP              INT NOT NULL,
  7.    FEC_INI              DATE,
  8.    FEC_FIN              DATE,
  9.    PRIMARY KEY (NUM_CED_EGR, NIT_EMP)
  10. );

Y la consulta la hice de la siguiente forma:

Código MySQL:
Ver original
  1. SELECT c.nom_ciu, e.raz_soc_emp FROM (ciudad c INNER JOIN empresa e USING (cod_ciu)) GROUP BY e.cod_ciu WHERE e.nit_emp IN
  2. (SELECT eg_nom_egr FROM (egresado eg INNER  JOIN empresas_trabajo_egresado ete USING (num_ced_egr) INNER JOIN empresa USING (nit_emp)) GROUP BY ete.nit_emp

Pero no me salen los resultados, como podria hacer esta consulta?

Agradezco me puedan ayudar

Última edición por oscarbt; 06/12/2010 a las 14:13