Acho que voce matou Evandro. Só uma duvida, no 1 exemplo a sintaxe é ....where exists (select 1 from.... ou .........where exists (select * from........?
Muito obrigado. Emerson Sanches Analista de Sistemas Em 3 de fevereiro de 2015 16:55, Evandro Giachetto evandrogiache...@gmail.com [oracle_br] <oracle_br@yahoogrupos.com.br> escreveu: > > > Não sei se entendi muito bem sua dúvida, se não, peço desculpas. > > Tente algo do tipo: > > > Select * > from Mestre > where exists (select 1 from Detalhe > where Detalhe.NumNota = > Mestre.NumNota > and Detalhe.Serie = Mestre.Serie and Detalhe.Fornecedor = > Mestre.Fornecedor and Detalhe.TipoMovto = Mestre.TipoMovto and Detalhe.Item > = &item). > > Ou > > Select * > from Mestre > where (NumNota, Serie, Fornecedor, TipoMovto) in (select NumNota, Serie, > Fornecedor, TipoMovto from Detalhe where Item = &item); > > > Só lembrando. > > Por questão de performance. > > Se seu Subselect (select ... from Detalhe where Item = %Item) trouxer um > número pequeno de dados, então o segundo exemplo deve exectuar mais rápido. > > Se por ventura, este subselect trouxer um número muito grande de > resultados, então a primeira opção deve apresentar uma performance melhor. > > Se a quantidade de resultados for balanceada entre as duas queries, então > as duas opções devem mostrar performance semelhante. > > > Evandro Giachetto > Oracle DBA > evandrogiache...@gmail.com > > > Em 3 de fevereiro de 2015 16:41, Emerson Sanches emerson.sanc...@gmail.com > [oracle_br] <oracle_br@yahoogrupos.com.br> escreveu: > > >> >> Bom tarde a todos do grupo. Em meu sistema tenho uma tabela de NF cuja >> chave primaria são os campos NumNota, Serie, Fornecedor, TipoMovto e outra >> tabela com os detalhes dessa nota com chave primaria composta por NumNota, >> Serie, Fornecedor, TipoMovto e Item. Ate tudo normalíssimo, acredito que >> todos tenham uma normalização desse tipo em seus sistemas. >> O problema é que meu chefe quer que eu faça uma pesquisa de notas >> fiscais, mas quer ter como parâmetro de busca o item da nota fiscal, ou >> seja, ele quer pesquisar pelo código de entrada do produto. Para resolver >> isso fiz um subquery assim: >> >> Select * >> from Mestre >> where Mestre.NumNota in (Select Detalhe.NumNota >> from Detalhe >> where Detalhe.Item = &item) >> >> >> Essa solução funciona parcialmente, pois vai me trazer a nota do item >> pesquisado, mas também vai trazer a nota de outro fornecedor qualquer, que >> tenha uma nota com o mesmo numero cadastrado no sistema. Para resolver isso >> eu teria que passar no subquery todos o campos da PK da tabela Mestre, e é >> exatamente isso que não sei como fazer. Se alguém tiver alguma sugestão, >> todas serão bem vindas. >> >> Obrigado >> >> >> >> Emerson Sanches >> >> > >