Re: [oracle_br] Re: Sub Query

2015-02-04 Por tôpico Emerson Sanches emerson.sanc...@gmail.com [oracle_br]
Chiappa, na realidade eu NÃO quero trazer nenhuma coluna da tabela
Detalhes, eu apenas quero filtrar por uma coluna da tabela Detalhes. Se
fizer o join entre as duas tabelas, vai replicar os mesmos dados da tabela
Mestre tantas vezes quanto houver itens na tabela Detalhes. Nao tentei
fazer um Select distinct pra eliminar essa duplicação...vou
tentar isso tb...

Obrigado.

Emerson

Emerson Sanches
Analista de Sistemas

Em 3 de fevereiro de 2015 17:23, jlchia...@yahoo.com.br [oracle_br] 
oracle_br@yahoogrupos.com.br escreveu:



 Para que vc precisa de sub-query ??? Se Realmente NumNota, Serie,
 Fornecedor e TipoMovto é a PK ** e ** isso está Presente nas duas tabelas
 como Chave, por que vc não faz um JOIN entre as duas ?? Assim :

 SELECT colunasdesejadasTANTOdatabeladeNOTAquantodaITEM
   FROM Mestre m, Detalhe d
  WHERE m.NumNota= i.NumNota
AND m.Serie  = i.Serie
AND m.Fornecedor = i.Fornecedor
AND m.TipoMovto  = i.TipoMovto
AND d.Item = v_item;

 []s

   Chiappa
  



Re: [oracle_br] Re: Sub Query

2015-02-04 Por tôpico jlchia...@yahoo.com.br [oracle_br]
Aí muda um pouco de figura : Então, para esses casos em que vc não precisa 
retornar informação de uma tabela mas sim só pesquisar se uma condição existe, 
aí o mais indicado seria mesmo o EXISTS , ele serve para isso. A consulta 
ficaria :

Select *
from Mestre m
where exists(select 1
   from Detalhe d
  where m.NumNota= d.NumNota  
and m.Serie  = d.Serie
and m.Fornecedor = d.Fornecedor
and m.TipoMovto  = d.TipoMovto
and d.Item   = v_item
 );

em português, estamos dizendo acima : leia cada linha da tabela Mestre, e para 
cada linha lida verifique se existe uma linha correspondente na Detalhe E que 
além disso o Item seja o especificado  - automagicamente as linhas da Mestre 
que não tiverem Correspondência não são exibidas, essa é a função do EXISTS, dá 
uma estudada no manual SQL Reference (e num bom livro de linguagem SQL para 
mais detalhes...

 []s
 
   Chiappa

RE: [oracle_br] Re: Sub Query

2015-02-04 Por tôpico 'Schiavini' et...@schiavini.inf.br [oracle_br]
Uma opção alternativa ao exists:

 

select ...

  from a

where ( a.c1, a.c2 ) in ( select b.c1, b.c2

 from b

where b.c3 = ... )

 

Étore

 

From: oracle_br@yahoogrupos.com.br [mailto:oracle_br@yahoogrupos.com.br] 
Sent: quarta-feira, 4 de fevereiro de 2015 08:56
To: oracle_br@yahoogrupos.com.br
Subject: Re: [oracle_br] Re: Sub Query

 

  

Chiappa, na realidade eu NÃO quero trazer nenhuma coluna da tabela Detalhes, eu 
apenas quero filtrar por uma coluna da tabela Detalhes. Se fizer o join entre 
as duas tabelas, vai replicar os mesmos dados da tabela Mestre tantas vezes 
quanto houver itens na tabela Detalhes. Nao tentei fazer um Select distinct pra 
eliminar essa duplicação...vou tentar isso tb...

 

Obrigado.

 

Emerson




Emerson Sanches
Analista de Sistemas

 

Em 3 de fevereiro de 2015 17:23, jlchia...@yahoo.com.br [oracle_br] 
oracle_br@yahoogrupos.com.br escreveu:

  

Para que vc precisa de sub-query ??? Se Realmente NumNota, Serie, Fornecedor e 
TipoMovto é a PK ** e ** isso está Presente nas duas tabelas como Chave, por 
que vc não faz um JOIN entre as duas ?? Assim :

SELECT colunasdesejadasTANTOdatabeladeNOTAquantodaITEM
  FROM Mestre m, Detalhe d
 WHERE m.NumNota= i.NumNota   
   AND m.Serie  = i.Serie 
   AND m.Fornecedor = i.Fornecedor
   AND m.TipoMovto  = i.TipoMovto 
   AND d.Item = v_item;

[]s

  Chiappa

 





[As partes desta mensagem que não continham texto foram removidas]



Re: [oracle_br] Re: Sub Query

2015-02-04 Por tôpico Emerson Sanches emerson.sanc...@gmail.com [oracle_br]
Problema resolvido. Obrigado a todos pela atenção.

Emerson

Emerson Sanches
Analista de Sistemas

Em 4 de fevereiro de 2015 11:15, 'Schiavini' et...@schiavini.inf.br
[oracle_br] oracle_br@yahoogrupos.com.br escreveu:



 Uma opção alternativa ao exists:

 select ...

 from a

 where ( a.c1, a.c2 ) in ( select b.c1, b.c2

 from b

 where b.c3 = ... )

 Étore

 From: oracle_br@yahoogrupos.com.br [mailto:oracle_br@yahoogrupos.com.br]
 Sent: quarta-feira, 4 de fevereiro de 2015 08:56
 To: oracle_br@yahoogrupos.com.br
 Subject: Re: [oracle_br] Re: Sub Query

 Chiappa, na realidade eu NÃO quero trazer nenhuma coluna da tabela
 Detalhes, eu apenas quero filtrar por uma coluna da tabela Detalhes. Se
 fizer o join entre as duas tabelas, vai replicar os mesmos dados da tabela
 Mestre tantas vezes quanto houver itens na tabela Detalhes. Nao tentei
 fazer um Select distinct pra eliminar essa duplicação...vou
 tentar isso tb...

 Obrigado.

 Emerson

 Emerson Sanches
 Analista de Sistemas

 Em 3 de fevereiro de 2015 17:23, jlchia...@yahoo.com.br [oracle_br] 
 oracle_br@yahoogrupos.com.br escreveu:

 Para que vc precisa de sub-query ??? Se Realmente NumNota, Serie,
 Fornecedor e TipoMovto é a PK ** e ** isso está Presente nas duas tabelas
 como Chave, por que vc não faz um JOIN entre as duas ?? Assim :

 SELECT colunasdesejadasTANTOdatabeladeNOTAquantodaITEM
 FROM Mestre m, Detalhe d
 WHERE m.NumNota = i.NumNota
 AND m.Serie = i.Serie
 AND m.Fornecedor = i.Fornecedor
 AND m.TipoMovto = i.TipoMovto
 AND d.Item = v_item;

 []s

 Chiappa

 [As partes desta mensagem que não continham texto foram removidas]

  



Re: [oracle_br] Re: Sub Query

2015-02-03 Por tôpico Gustavo Guedes guedescomputa...@gmail.com [oracle_br]
Boa noite!

Não que as outras soluções não funcionem. Mas eu daria e recomendaria
fortemente a sugestão já dada por Chiappa... Pois é meio que a essência,
o conceito ou propósito de um banco de dados relacional: Simplesmente
relacionar as tabelas desejadas, através dos devidos e respectivos
campos-chave (FK's) das mesmas... E só.

Neste caso, não precisa de sub-queries ou exists, etc. Só relacionar mesmo,
e boa.

Espero ter ajudado, abraços!

Em 3 de fevereiro de 2015 17:24, jlchia...@yahoo.com.br [oracle_br] 
oracle_br@yahoogrupos.com.br escreveu:



 Claro, se eu usei d como alias para a tabela de detalhes, d. deveria ser o
 prefixo, substitua...

 []s

   Chiappa
  




-- 
Atenciosamente,
*Gustavo Guedes de Sene*