Ver Mensaje Individual
  #1 (permalink)  
Antiguo 30/09/2008, 23:20
mariano_donati
 
Fecha de Ingreso: marzo-2005
Mensajes: 1.418
Antigüedad: 19 años, 2 meses
Puntos: 9
Contar registros que cumplan una condicion

Hola a todos. Manejo Sql Server 2000 como motor de base de datos. Tengo una tabla AREAS y una tabla CODIGOS. Cada código está relacionado con un área en AREAS y tiene un atributo USADO (de tipo bit). Quiero una consulta que me liste TODAS LAS AREAS contando además cuantos códigos cumplen con USADO = 1.
Actualmente la consulta que manejo es la siguiente:

SELECT Areas.Nombre, Count(*) As Total FROM Areas, Codigos WHERE Codigos.Area_Id = Areas.Id And Codigos.Usado = 1

Está consulta funciona bien cuando al menos uno de los códigos relacionados con el área tiene USADO = 1, pero si esto no lo cumple ninguno entonces directamente no me devuelve ese registro, cuando en realidad quiero que me devuelva el nombre del área y 0 como total de registros que tienen el atributo USADO = 1.
No sé si me habré explicado bien, gráficamente sería algo así:

Código:
Tabla Areas
--------------
Id                   Nombre                        
---                  --------------
1                    Area1
2                    Area2
3                    Area3

Tabla Codigos
------------------
Id      Codigo        Usado     Area_Id
---     -----------     ---------    ----------
1       52456             1              1
2       41525             0              1
3       25687             1              2
4       25446             1              2
5       14564             1              2
6       12546             0              3
Actualmente, esto me devuelve:

Código:
Nombre            Total
----------            ------
Area1                  1
Area2                  3
Cuando en realidad quiero que me devuelva:
Código:
Nombre            Total
----------            -------
Area1                  1
Area2                  3
Area3                  0
Espero que alguien pueda darme una mano con esto. Estaré muy agradecido si así es.
Un abrazo.
__________________
Add, never Remove