Subject Re: [IBO] Explicit join doesn´t work with IB Query
Author Carlos Daniel
Hi Helen,

I changed my code... but the problem keep... perhaps i will back to "implicit join", with "explicit join" is necessary make a "refresh" and is not a good visual effect to user...

Thanks :)

SELECT proc.PK_PROC
, proc.FG_CATEGORIA
, cat.DESCRICAO AS CAT_DESC
, proc.CODIGO
, proc.DESCRICAO
, proc.LOG_OPERADOR_I
, proc.LOG_OPERADOR_E
, proc.DATA_INC
, proc.DATA_ALT
, proc.CARENCIA
, proc.PERIODICIDADE
, proc.RETORNO
, proc.UTILIZACAO
, proc.REMUNERACAO
, proc.CO_PARTICIP
, proc.BLOQUEADO
, proc.OBSERVACOES
FROM PROCEDIMENTOS proc
inner join categorias cat
on proc.fg_categoria = cat.pk_categoria



--- In IBObjects@yahoogroups.com, Helen Borrie <helebor@...> wrote:
>
> At 06:15 AM 4/05/2011, Carlos Daniel wrote:
> >Hi friends,
> >
> >I made this code on my ib_iquery
> >
> >SELECT PK_PROC
> > , FG_CATEGORIA
> > , CATEGORIAS.DESCRICAO AS CAT_DESC
> > , CODIGO
> > , PROCEDIMENTOS.DESCRICAO
> > , PROCEDIMENTOS.LOG_OPERADOR_I
> > , PROCEDIMENTOS.LOG_OPERADOR_E
> > , PROCEDIMENTOS.DATA_INC
> > , PROCEDIMENTOS.DATA_ALT
> > , CARENCIA
> > , PERIODICIDADE
> > , RETORNO
> > , UTILIZACAO
> > , REMUNERACAO
> > , CO_PARTICIP
> > , BLOQUEADO
> > , PROCEDIMENTOS.OBSERVACOES
> >FROM PROCEDIMENTOS
> >left join categorias on procedimentos.fg_categoria = categorias.pk_categoria
>
> There is no way to tell whether it is related to your display/refresh problem, as you do not say which version of DB server, client and IBO you have used here.
>
> The SQL syntax in this query is not valid. It is now 7 years since developers were advised of the impending enforcement of correct syntax for joins. In Firebird 1.5 it would issue a warning through the Error Status Array, but would allow it. For Firebird 2 and higher versions it causes an exception. As far as I recall, at IBO 4.7 or 4.8, Jason made changes to the parser to take in these corrections in the Firebird parser. But perhaps you are still using InterBase...and I have no idea whether Borland or Embarcadero have corrected the IB parser.
>
> In case you don't know what I am talking about, the standard (and Firebird 2 onwards) requires all referenced columns in joined queries to be fully qualified, using either table aliases or table identifiers, but not a mixture of both. A correct query could be (guessing at the location of your unqualified columns):
>
> SELECT proc.PK_PROC
> , proc.FG_CATEGORIA
> , cat.DESCRICAO AS CAT_DESC
> , cat.CODIGO
> , proc.DESCRICAO
> , proc.LOG_OPERADOR_I
> , proc.LOG_OPERADOR_E
> , proc.IMENTOS.DATA_INC
> , proc.S.DATA_ALT
> , cat.CARENCIA
> , cat.PERIODICIDADE
> , cat.RETORNO
> , cat.UTILIZACAO
> , cat.REMUNERACAO
> , cat.CO_PARTICIP
> , cat.BLOQUEADO
> , cat.PROCEDIMENTOS.OBSERVACOES
> FROM PROCEDIMENTOS proc
> left join categorias cat
> on proc.fg_categoria = cat.pk_categoria
>
> Also, with a left join, you should be careful with your KeyLinks as you will potentially have NULLs in columns retrieved from CATEGORIAS. This is *not* a naturally updatable set and bad KeyLinks would cause the problem that you described.
>
> Not a solution, I know, but possibly it might shed some light...
>
> Helen
>