Ver Mensaje Individual
  #1 (permalink)  
Antiguo 13/04/2013, 15:41
negro1985
 
Fecha de Ingreso: febrero-2009
Ubicación: mexico
Mensajes: 148
Antigüedad: 15 años, 2 meses
Puntos: 1
Pregunta Optimizar consulta

Me podrían dar su opinión, critica, recomendación acerca de esta consulta

Código MySQL:
Ver original
  1.                         (SELECT
  2.                             IF(COUNT(cc.ID_CONTRATO)>0,COUNT(cc.ID_CONTRATO),'')
  3.                         FROM
  4.                             contrato cc
  5.                         INNER JOIN especialidad ee ON ee.ID_ESPECIALIDAD = cc.ID_ESPECIALIDAD
  6.                         INNER JOIN departamento dd ON dd.ID_DEPARTAMENTO = ee.ID_DEPARTAMENTO
  7.                         WHERE
  8.                             cc.ID_SITUACION = 18
  9.                         AND
  10.                             cc.ID_TIPO_CONTRATO = '".$this->getId_tipo_contrato()."'
  11.                         AND
  12.                             dd.NOMBRE_CORTO = '".$this->getNombre_corto_departamento()."'
  13.                         ) AS 'EJECUCION',
  14.                         (SELECT
  15.                             IF(COUNT(cc.ID_CONTRATO)>0,COUNT(cc.ID_CONTRATO),'')
  16.                         FROM
  17.                             contrato cc
  18.                         INNER JOIN especialidad ee ON ee.ID_ESPECIALIDAD = cc.ID_ESPECIALIDAD
  19.                         INNER JOIN departamento dd ON dd.ID_DEPARTAMENTO = ee.ID_DEPARTAMENTO
  20.                         WHERE
  21.                             cc.ID_SITUACION = 19
  22.                         AND
  23.                             cc.ID_TIPO_CONTRATO = '".$this->getId_tipo_contrato()."'
  24.                         AND
  25.                             dd.NOMBRE_CORTO = '".$this->getNombre_corto_departamento()."'
  26.                         ) AS 'SUSPENDIDO',
  27.                         (SELECT
  28.                             IF(COUNT(cc.ID_CONTRATO)>0,COUNT(cc.ID_CONTRATO),'')
  29.                         FROM
  30.                             contrato cc
  31.                         INNER JOIN especialidad ee ON ee.ID_ESPECIALIDAD = cc.ID_ESPECIALIDAD
  32.                         INNER JOIN departamento dd ON dd.ID_DEPARTAMENTO = ee.ID_DEPARTAMENTO
  33.                         WHERE
  34.                             cc.ID_SITUACION = 20
  35.                         AND
  36.                             cc.ID_TIPO_CONTRATO = '".$this->getId_tipo_contrato()."'
  37.                         AND
  38.                             dd.NOMBRE_CORTO = '".$this->getNombre_corto_departamento()."'
  39.                         ) AS 'MORA',
  40.                         (SELECT
  41.                             IF(COUNT(cc.ID_CONTRATO)>0,COUNT(cc.ID_CONTRATO),'')
  42.                         FROM
  43.                             contrato cc
  44.                         INNER JOIN especialidad ee ON ee.ID_ESPECIALIDAD = cc.ID_ESPECIALIDAD
  45.                         INNER JOIN departamento dd ON dd.ID_DEPARTAMENTO = ee.ID_DEPARTAMENTO
  46.                         WHERE
  47.                             cc.ID_SITUACION = 39
  48.                         AND
  49.                             cc.ID_TIPO_CONTRATO = '".$this->getId_tipo_contrato()."'
  50.                         AND
  51.                             dd.NOMBRE_CORTO = '".$this->getNombre_corto_departamento()."'
  52.                         ) AS 'FINIQUITO',
  53.                         (SELECT
  54.                             IF(COUNT(cc.ID_CONTRATO)>0,COUNT(cc.ID_CONTRATO),'')
  55.                         FROM
  56.                             contrato cc
  57.                         INNER JOIN especialidad ee ON ee.ID_ESPECIALIDAD = cc.ID_ESPECIALIDAD
  58.                         INNER JOIN departamento dd ON dd.ID_DEPARTAMENTO = ee.ID_DEPARTAMENTO
  59.                         WHERE
  60.                             cc.ID_SITUACION = 46
  61.                         AND
  62.                             cc.ID_TIPO_CONTRATO = '".$this->getId_tipo_contrato()."'
  63.                         AND
  64.                             dd.NOMBRE_CORTO = '".$this->getNombre_corto_departamento()."'
  65.                         ) AS 'PROBLEMA'
  66.                         FROM
  67.                             contrato c
  68.                         INNER JOIN especialidad e ON e.ID_ESPECIALIDAD = c.ID_ESPECIALIDAD
  69.                         INNER JOIN departamento d ON d.ID_DEPARTAMENTO = e.ID_DEPARTAMENTO
  70.                         WHERE
  71.                             d.NOMBRE_CORTO = '".$this->getNombre_corto_departamento()."'

Que devuelte esta consulta, devuelve los tipos de contratos(genéricos y especificos) por departamento, al igual que devuelve la situación de cada contrato (ejecución,mora,problema,suspendido,finiquito).

se aceptan todo tipo de comentarios, yo se que se puede mejorar pero necesito su ayuda para esto, gracias de antemano.

Última edición por gnzsoloyo; 13/04/2013 a las 16:09 Razón: Etiquetdo incorrecto