select 1 mesmo ou select null. O importante é a query retornar algum valor. * tbm funciona, mas você vai foçar dados que não vai usar pra memória, o que não é interessante.
Evandro Giachetto Oracle DBA [email protected] Em 3 de fevereiro de 2015 17:22, Emerson Sanches [email protected] [oracle_br] <[email protected]> escreveu: > > > 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 > [email protected] [oracle_br] <[email protected]> > 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 >> [email protected] >> >> >> Em 3 de fevereiro de 2015 16:41, Emerson Sanches >> [email protected] [oracle_br] <[email protected]> >> 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 >>> >>> >> > >
