pregunta con having

10/07/2006 - 20:12 por LUCHO | Informe spam
Buenas tardes grupo:


tengo la siguiente sentencia:

SELECT FAMILIAPRODUCTOSERVICIO,CANT_PRODUCTOS = COUNT(CODIGOPRODUCTO)
FROM PRODUCTOS, FAMILIASPRODUCTOSSERVICIOS
WHERE PRODUCTOS.CODIGOFAMILIAPRODUCTOSERVICIO FAMILIASPRODUCTOSSERVICIOS.CODIGOFAMILIAPRODUCTOSERVICIO
GROUP BY FAMILIAPRODUCTOSERVICIO
HAVING COUNT (CODIGOPRODUCTO) < 1

Necesito obtener los que tengan el valor igual a cero; cuando corro la
consulta no me muestra nada, aun cuando existen 48 registros que estan
vacios.

Alguno de ustedes me puede decir en donde estoy cometiendo el error ?

Muchas gracias de antemano por su comentarios

Atentamente



LUCHO

Preguntas similare

Leer las respuestas

#1 Alejandro Mesa
10/07/2006 - 20:57 | Informe spam
LUCHO,

Necesito obtener los que tengan el valor igual a cero; cuando corro la
consulta no me muestra nada, aun cuando existen 48 registros que estan
vacios.



Que cosa esta vacia, pudieras ser mas explicito?

Si te refieres a que la columna [CODIGOPRODUCTO] es NULL, entonces no puedes
usar la funcion de grupo COUNT(CODIGOPRODUCTO), pues de esa forma SQL Server
no toma en cuenta los valores NULL.


AMB

"LUCHO" wrote:

Buenas tardes grupo:


tengo la siguiente sentencia:

SELECT FAMILIAPRODUCTOSERVICIO,CANT_PRODUCTOS = COUNT(CODIGOPRODUCTO)
FROM PRODUCTOS, FAMILIASPRODUCTOSSERVICIOS
WHERE PRODUCTOS.CODIGOFAMILIAPRODUCTOSERVICIO > FAMILIASPRODUCTOSSERVICIOS.CODIGOFAMILIAPRODUCTOSERVICIO
GROUP BY FAMILIAPRODUCTOSERVICIO
HAVING COUNT (CODIGOPRODUCTO) < 1

Necesito obtener los que tengan el valor igual a cero; cuando corro la
consulta no me muestra nada, aun cuando existen 48 registros que estan
vacios.

Alguno de ustedes me puede decir en donde estoy cometiendo el error ?

Muchas gracias de antemano por su comentarios

Atentamente



LUCHO



Respuesta Responder a este mensaje
#2 Jorge Gonzalez
10/07/2006 - 21:54 | Informe spam
Lucho

El problema es que la relación inner join ( aunque estás utilizando el
formato Where para implementarla) es restrictiva. Entonces al relacionar
ambas tablas, los registros en Productos que no tienen registros
relacionados en FamiliaProductosServicios ni siquiera son tomados en cuenta.
Eso es por cómo el SQL Server ejecuta sus queries.

Una forma alternativa de hacerlo para obtener lo que deseas sería la
siguiente:

SELECT FAMILIAPRODUCTOSERVICIO, CANT_PRODUCTOS = (select
COUNT(CODIGOPRODUCTO) from FamiliasProductosServicios FPS Where
P.CODIGOFAMILIAPRODUCTOSERVICIO = FPS.CODIGOFAMILIAPRODUCTOSERVICIO)
From
FROM PRODUCTOS P
Where (select COUNT(CODIGOPRODUCTO) from FamiliasProductosServicios FPS
Where P.CODIGOFAMILIAPRODUCTOSERVICIO = FPS.CODIGOFAMILIAPRODUCTOSERVICIO)
=0

En este caso sí vas a obtener la cuenta igual a 0. Y no tenés que
preocuparte por que la ejecución del Select anidado se dé 2 veces, ya que el
motor de consutas identifica que es la misma y sólo la ejecuta 1 vez.

Espero que esta info. te sea de utilidad.

Saludos
Jorge González
Nicaragua

"LUCHO" escribió en el mensaje
news:%
Buenas tardes grupo:


tengo la siguiente sentencia:

SELECT FAMILIAPRODUCTOSERVICIO,CANT_PRODUCTOS = COUNT(CODIGOPRODUCTO)
FROM PRODUCTOS, FAMILIASPRODUCTOSSERVICIOS
WHERE PRODUCTOS.CODIGOFAMILIAPRODUCTOSERVICIO > FAMILIASPRODUCTOSSERVICIOS.CODIGOFAMILIAPRODUCTOSERVICIO
GROUP BY FAMILIAPRODUCTOSERVICIO
HAVING COUNT (CODIGOPRODUCTO) < 1

Necesito obtener los que tengan el valor igual a cero; cuando corro la
consulta no me muestra nada, aun cuando existen 48 registros que estan
vacios.

Alguno de ustedes me puede decir en donde estoy cometiendo el error ?

Muchas gracias de antemano por su comentarios

Atentamente



LUCHO


email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida