Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

NaPraia

Consulta simples

Recommended Posts

Oi pessoal, tô com um probleminho chato aqui.Eu estou fazendo uma consulta para o bloco de dados do forms(6i)Eu tenho a tabela EMPRESA (que é pai) e eu uso os campos cd_empresa e ds_empresa, para listar na tela.Aí eu tenho uma outra tabela EMPRESA_IR, onde eu tenho o cd_empresa e o cd_exercicio.O cd_exercicio eu pego da tabela EXERCICIO, que é o ano, number(4). ex:2006, 2005, etcO bloco me traz: SELECT CD_EMPRESA, DS_EMPRESA FROM EMPRESAna cláusula WHERE do bloco eu tenho: CD_EMPRESA IN (SELECT CD_EMPRESA FROM EMPRESA_IR)para não repetir as empresas. Está funcionando tudo legal, agora vem o problema.O problema é que essa lista de cd_empresa e ds_empresa, eu preciso ordernar em função do cd_exercicio.Alguém tem sabe como eu posso fazer isso? Ou uma dica? ou um palpite??Sabe como é cliente, quer, e quer, e ainda dizem que eles tem sempre razão.Valeu!!!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Veja esse exemplo básico:

 

SQL> conn rodrigoalmeidaInforme a senha:Conectado.SQL> create table EMPRESA (cod_empresa number(5), ds_empresa varchar2(100));Tabela criada.SQL> insert into EMPRESA values (1,'Empresa de Calçados');1 linha criada.SQL> insert into EMPRESA values (2,'Empresa de Computadores');1 linha criada.SQL> insert into EMPRESA values (3,'Empresa de Remédios');1 linha criada.SQL> insert into EMPRESA values (4,'Empresa de Alimentos');1 linha criada.SQL> insert into EMPRESA values (5,'Empresa de Garotas de Programa');1 linha criada.SQL> create table EMPRESA_IR (cod_empresa number(5), cod_exercicio number(4));Tabela criada.SQL> insert into EMPRESA_IR values (1,2000);1 linha criada.SQL> insert into EMPRESA_IR values (2,2001);1 linha criada.SQL> insert into EMPRESA_IR values (3,2001);1 linha criada.SQL> insert into EMPRESA_IR values (4,2003);1 linha criada.SQL> insert into EMPRESA_IR values (5,2006);1 linha criada.SQL> commit;Commit concluÝdo.SQL> create table EXERCICIO (cod_exercicio number(4));Tabela criada.SQL> insert into EXERCICIO values (2001);1 linha criada.SQL> insert into EXERCICIO values (2000);1 linha criada.SQL> insert into EXERCICIO values (2003);1 linha criada.SQL> insert into EXERCICIO values (2006);1 linha criada.SQL> commit;Commit concluÝdo.SQL> set line 150SQL> set pagesize 1000SQL> select * from EMPRESA;COD_EMPRESA DS_EMPRESA----------- ----------------------------------------------------------------------------------------------------		  1 Empresa de Calçados		  2 Empresa de Computadores		  3 Empresa de Remédios		  4 Empresa de Alimentos		  5 Empresa de Garotas de ProgramaSQL> select * from EMPRESA_IR  2 ;COD_EMPRESA COD_EXERCICIO----------- -------------		  1		  2000		  2		  2001		  3		  2001		  4		  2003		  5		  2006SQL> select * from EXERCICIO;COD_EXERCICIO-------------		 2001		 2000		 2003		 2006SQL> l  1  select a.cod_empresa, a.ds_empresa, c.cod_exercicio  2  from EMPRESA a  3  inner join EMPRESA_IR b ON a.cod_empresa=b.cod_empresa  4  inner join EXERCICIO c on b.cod_exercicio=c.cod_exercicio  5* order by c.cod_exercicioSQL> /COD_EMPRESA DS_EMPRESA																				   COD_EXERCICIO----------- ---------------------------------------------------------------------------------------------------- -------------		  1 Empresa de Calçados																				   2000		  2 Empresa de Computadores																			   2001		  3 Empresa de Remédios																				   2001		  4 Empresa de Alimentos																				  2003		  5 Empresa de Garotas de Programa																		2006SQL >

Rapaz, aproveita que sua modelagem está utilizando tabelas de APOIO (EMPRESA_IR) na normalização do banco de dados, então poderá realizar INNER sem precisar se preocupar com duplicação de dados.

 

Abraços, http://forum.imasters.com.br/public/style_emoticons/default/natal_w00t.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

Valeu Rodrigo, mas isso não me ajuda.mas isso é passado, o cliente aceitou assim mesmo.Mas ainda vou dar uma olhada como fazer na mão o pre_query para executar. Pois normalmente ele faz automático.Depois que eu ajeitar, post aqui.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.