Ver Mensaje Individual
  #4 (permalink)  
Antiguo 03/12/2009, 05:25
Avatar de gnzsoloyo
gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: ejercicio de mysql

En tu ejemplo estás comparando el valor de EC.CodigoEquipoComputo, no con los códigos, sino con la suma del valor de los códigos que cumplen con la condición indicada.
Eso no tiene sentido.
Prueba:
Código sql:
Ver original
  1. SELECT
  2.   P.CodigoPrograma,P.Descripcion `Programa`,
  3.   COUNT(EC.CodigoEquipoComputo) `PCS`,
  4.   SUM(PI.FlagTieneLicencia) AS `Pcs con licencia`
  5. FROM
  6.   EquipoComputo EC
  7.   INNER JOIN ProgramasInstalados PI USING(CodigoEquipoComputo)
  8.   INNER JOIN Programas p USING(CodigoPrograma)
  9. WHERE
  10.       (YEAR(EC.FechaAdquisicion) BETWEEN 2000 AND 2002) AND
  11.       NOT (EC.CodigoEquipoComputo IN (SELECT
  12.                                          PM.CodigoEquipoComputo
  13.                                       FROM
  14.                                          EquipoComputo EC
  15.                                          INNER JOIN PlanMantenimiento PM USING(CodigoEquipoComputo)
  16.                                       WHERE
  17.                                          (YEAR(EC.FechaRevision)=2001)
  18.                                       GROUP BY (PM.CodigoEquipoComputo)
  19.                                       HAVING SUM(PM.CodigoEquipoComputo)>2
  20.                                      )
  21. GROUP BY P.Descripcion;

Simplifiqué un poco el código y le puse la relación donde tiene que ir (en el INNER JOIN y no en el WHERE).
Por lo demás, estoy de acuerdo con Serser.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)