SQL Group Incluyendo filas vacías
Por el bien de esta pregunta, supongamos que esta estructura de tabla:
People:
PersonID int PK
Name varchar(50)
Place int NULL FK -> Places.PlaceID
MovedIn datetime
Places:
PlaceID int PK
Name varchar(50)
Quiero determinar cuántas personas viven en cada lugar:
SELECT pla.PlaceID, COUNT(*)
FROM Places AS pla
LEFT JOIN People as peo ON peo.PlaceID = pla.PlaceID
GROUP BY pla.PlaceID
Esta consulta omitirá los lugares que no tienen personas viviendo allí. ¿Hay alguna forma de hacer que cuente 0 en su lugar?
(Me dirijo a SQL Server 2005, en caso de que sea importante)
EDIT: Aquí está mi consulta real (anónima), después de intentar adaptar la solución de Steve:
SELECT
ft.FooTypeID, COUNT(f.FooID)
FROM FooType as ft
LEFT OUTER JOIN Foo f ON ft.FooTypeID = f.FooTypeID
LEFT JOIN FooConfig fc ON ft.NotificationConfigID = fc.FooConfigID
WHERE
DateDiff(day, GetDate(), f.Date) > 0 AND
DateDiff(day, GetDate(), f.Date) < fc.Days
GROUP BY ft.FooTypeID
(La traducción entre mi ejemplo inicial y este es: Foo -> People, FooType -> Places, FooConfig -> Una tercera tabla, para mayor diversión) Puedo hacer que esto funcione con la solución de Fosco, pero prefiero la de Steve.