Ver Mensaje Individual
  #5  
Antiguo 16-07-2008
Avatar de gluglu
[gluglu] gluglu is offline
Miembro Premium
 
Registrado: sep 2004
Ubicación: Málaga - España
Posts: 1.455
Reputación: 23
gluglu Va por buen camino


Código SQL [-]
Select BO.DATEFROM, BO.DATETO, CA2.CATEGORYNO,
(Select Count(*) from OBJECTS OB
 left join CATEGORIES CA1
   on OB.CATEGORYNO      = CA1.CATEGORYNO
   and CA1.SUBCATEGORYNO = 0
 where OB.BUILDINGNO = 1
 and CA1.CATEGORYNO  = CA2.CATEGORYNO) as SumCount
from BOOKINGS_OBJECTS_TEMP BO
left join CATEGORIES CA2
  on BO.CATEGORYNO      = CA2.CATEGORYNO
  and CA2.SUBCATEGORYNO = 0
where CA2.DIVISIONTYPE    = 0
and CA2.OBJECTRESERVATION = 0
group by BO.DATEFROM, BO.DATETO, CA2.CATEGORYNO

Basta con cambiar BO.CATEGORYNO por CA2.CATEGORYNO. Así funciona correctamente la consulta.

Al parecer Firebird 2.1 no entiende la referencia (asunto que realmente es correcto) a BO.CATEGORYNO como campo devuelto por BOOKINGS_OBJECTS_TEMP cuyo alias es BO, sino al ser un campo devuelto por el left join de la consulta principal (CATEGORIES) cuyo alias es CA2, pues por lo visto, y vuelvo a decir que con razón, hay que referenciarlo por los alias como CA2 y no como BO, al igual que lo referencia en el Select propio o en el Group By.

Vamos, que Firebird me ha detectado realmente un error de referencias que Interbase acepta.
__________________
Piensa siempre en positivo !
Responder Con Cita