Fórum SubQuery com Múltiplas Colunas #39537

17/10/2003

0

Olá,
Gostaria de saber se é possível executar uma subquery que [u:eaebbadbb4]devolva[/u:eaebbadbb4] [b:eaebbadbb4]MÚLTIPLAS COLUNAS [/b:eaebbadbb4]no Interbase.
Ex:
Select a.cod_empre, a.cod_gerent, a.cod_depart
from empregado a
where [b:eaebbadbb4](a.cod_gerent, a.cod_depart)[/b:eaebbadbb4] in (Select [b:eaebbadbb4]cod_gerent, cod_depart[/b:eaebbadbb4]
from empregado
where cod_empre = 178)


Cesartd

Cesartd

Responder

Posts

17/10/2003

Afarias

huuummm.... temo q não... mas vc pode usar um artificiozinho::

select a.cod_empre, a.cod_gerent, a.cod_depart
from empregado a where (a.cod_gerent || a.cod_depart) in (
select cod_gerent || cod_depart
from empregado where cod_empre = 178)

se os campos não forem char ou varchar, converta usando::

cast(campo as char(n)) -- n pode ser 3, 4, 10 ... o maior necessário


T+


Responder

Gostei + 0

17/10/2003

Cesartd

É uma boa saída, mas o problema é que ele não vai usar índice.

Valeu

César


Responder

Gostei + 0

18/10/2003

Afarias

|É uma boa saída, mas o problema é que ele não vai usar índice

é verdade, mas se vc precisa de maior performance neste caso, pode usar uma StoredProcedure ::

set term ^;

create procedure consulta_empregados (cod_emp_ref integer)
returns (cod_empre integer, cod_gerent integer, cod_depart integer)
as
declare variable cod_ger_ref integer;
declare variable cod_dep_ref integer;
begin

select cod_gerent, cod_depart from empregado
where cod_empre = :cod_emp_ref into :cod_ger_ref, cod_dep_ref;

for select cod_empre, cod_gerent, cod_depart from empregado
where cod_gerent = :cod_ger_ref and cod_depart = :cod_dep_ref
into :cod_empre, :cod_gerent, :cod_depart do
suspend;

end^


só uma idéia, T+


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar