Subject Re: [ib-support] FBUDF NVL Problem
Author Helen Borrie
At 11:04 AM 14/03/2003 -0300, you wrote:
>I cutted the parts without nvl from original sql. :)
>This is what i want to execute.

So - look at my comments about enabling your query to extract from the same
tables twice (once for the first set, once for the second set). Use
different aliases.

>It is a report sql (i can't use SP for this
>report in special)

A selectable SP would be a much more elegant way to do this. Why can't you
use SP output for your report?

>The difference between the first and second sql is that when RA.ID_PAI is
>null i have to look at other table called Grupo_Touros to find the data.
>
>select
> CRIADOR.ID_PESSOA ID_GRUPO,
> SNVL(CRIADOR.NOME, 'Criador Indefinido') NOME_GRUPO,
> INVL(CRIADOR.ID_PESSOA - CRIADOR.ID_PESSOA + 1, 0),
> RA.DATA_INI_SERVICO,
> RA.DATA_FIM_SERVICO,
> A.ID_ANIMAL,
> A.BRINCO BRINCO_MAE,
> A.NOME NOME_MAE,
> A.TATUAGEM TATUAGEM_MAE,
> A.REGISTRO REGISTRO_MAE,
> PAI.BRINCO BRINCO_PAI,
> PAI.NOME NOME_PAI,
> PAI.TATUAGEM TATUAGEM_PAI,
> PAI.REGISTRO REGISTRO_PAI
>from
> ANIMAL A inner join
> REPRODUCAO_ANIMAL RA on (A.ID_ANIMAL = RA.ID_ANIMAL) inner join
> ANIMAL PAI on (PAI.ID_ANIMAL = RA.ID_PAI)
> left outer join PESSOA CRIADOR on (A.ID_CRIADOR = CRIADOR.ID_PESSOA)
>
>where
> RA.METODO_SERVICO = 1 and /*Monta Controlada*/
> RA.DATA_INI_SERVICO >= '2003-03-13' and RA.DATA_INI_SERVICO <=
>'2003-03-14'
> and (A.ATIVO = 1)
> and (A.ID_ESPECIE = 1)
>
>
>union
>
>select
> INVL(CRIADOR.ID_PESSOA, -1) ID_GRUPO,
> SNVL(CRIADOR.NOME, 'Criador Indefinido') NOME_GRUPO,
> INVL(CRIADOR.ID_PESSOA - CRIADOR.ID_PESSOA + 1, 0),
> RA.DATA_INI_SERVICO,
> RA.DATA_FIM_SERVICO,
> A.ID_ANIMAL,
> A.BRINCO BRINCO_MAE,
> A.NOME NOME_MAE,
> A.TATUAGEM TATUAGEM_MAE,
> A.REGISTRO REGISTRO_MAE,
> PAI.BRINCO BRINCO_PAI,
> PAI.NOME NOME_PAI,
> PAI.TATUAGEM TATUAGEM_PAI,
> PAI.REGISTRO REGISTRO_PAI
>from
> ANIMAL A inner join
> REPRODUCAO_ANIMAL RA on (A.ID_ANIMAL = RA.ID_ANIMAL) left outer join
> REPRODUCAO R on (R.ID_REPRODUCAO = RA.ID_REPRODUCAO) inner join
> GRUPO_TOUROS GT on (GT.ID_REPRODUCAO = RA.ID_REPRODUCAO) inner join
> ANIMAL PAI on (PAI.ID_ANIMAL = GT.ID_ANIMAL)
> left outer join PESSOA CRIADOR on (A.ID_CRIADOR = CRIADOR.ID_PESSOA)
>
>where
> RA.METODO_SERVICO = 1 and /*Monta Controlada*/
> RA.DATA_INI_SERVICO >= '2003-03-13' and RA.DATA_INI_SERVICO <=
>'2003-03-14'
> and (A.ATIVO = 1)
> and (A.ID_ESPECIE = 1)
>
>order by
> 3 desc, 2, 1,
> 3 /*RA.DATA_INI_SERVICO*/,
> 4 /*RA.DATA_FIM_SERVICO*/,
> 6 /*A.BRINCO*/,
> 5 /*A.ID_ANIMAL*/,
> 10 /*PAI.BRINCO*/
>
>
>----- Original Message -----
>From: "Helen Borrie" <helebor@...>
>To: <ib-support@yahoogroups.com>
>Sent: Friday, March 14, 2003 10:48 AM
>Subject: Re: [ib-support] FBUDF NVL Problem
>
>
> > At 10:27 AM 14/03/2003 -0300, you wrote:
> > >Hi,
> > >i'm trying to use a nvl function with a union sql. I'm getting garbage
>data
> > >instead what i expected.
> > >
> > >A small exemple of my query is:
> > >
> > >select
> > > INVL(CRIADOR.ID_PESSOA, -1) ID_GRUPO,
> > > SNVL(CRIADOR.NOME, 'Criador Indefinido') NOME_GRUPO,
> > > A.ID_ANIMAL
> > >from
> > > ANIMAL A left outer join
> > > PESSOA CRIADOR on (A.ID_CRIADOR = CRIADOR.ID_PESSOA)
> > >
> > >
> > >union
> > >
> > >select
> > > INVL(CRIADOR.ID_PESSOA, -1) ID_GRUPO,
> > > SNVL(CRIADOR.NOME, 'Criador Indefinido') NOME_GRUPO,
> > > A.ID_ANIMAL
> > >from
> > > ANIMAL A left outer join
> > > PESSOA CRIADOR on (A.ID_CRIADOR = CRIADOR.ID_PESSOA)
> > >
> > >This is a know bug?
> >
> > Not a bug in the engine! :-)
> > You are trying to make a union of two identical sets of data from the same
> > table.... Still, if this is really what you want to do, the way to make
> > the query extract twice from the same tables is to use different table
> > aliases for the second set. So, you would have something like this:
> >
> > select
> > INVL(CRIADOR1.ID_PESSOA, -1) ID_GRUPO,
> > SNVL(CRIADOR1.NOME, 'Criador Indefinido') NOME_GRUPO,
> > A1.ID_ANIMAL
> > from
> > ANIMAL A1 left outer join
> > PESSOA CRIADOR1 on (A1.ID_CRIADOR = CRIADOR1.ID_PESSOA)
> >
> > union
> > select
> > INVL(CRIADOR2.ID_PESSOA, -1) ID_GRUPO,
> > SNVL(CRIADOR2.NOME, 'Criador Indefinido') NOME_GRUPO,
> > A2.ID_ANIMAL
> > from
> > ANIMAL A2 left outer join
> > PESSOA CRIADOR2 on (A.ID_CRIADOR2 = CRIADOR2.ID_PESSOA)
> >
> > heLen
> >
> >
> >
> >
> > To unsubscribe from this group, send an email to:
> > ib-support-unsubscribe@egroups.com
> >
> >
> >
> > Your use of Yahoo! Groups is subject to http://docs.yahoo.com/info/terms/
> >
>
>
>
>To unsubscribe from this group, send an email to:
>ib-support-unsubscribe@egroups.com
>
>
>
>Your use of Yahoo! Groups is subject to http://docs.yahoo.com/info/terms/