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
>>
>>
>  
>
  • [oracle_br] Sub Q... Emerson Sanches emerson.sanc...@gmail.com [oracle_br]
    • Re: [oracle_... Evandro Giachetto evandrogiache...@gmail.com [oracle_br]
      • Re: [ora... Emerson Sanches emerson.sanc...@gmail.com [oracle_br]
        • Re: ... Evandro Giachetto evandrogiache...@gmail.com [oracle_br]
    • [oracle_br] ... jlchia...@yahoo.com.br [oracle_br]
      • [oracle_... jlchia...@yahoo.com.br [oracle_br]
        • Re: ... Gustavo Guedes guedescomputa...@gmail.com [oracle_br]
      • Re: [ora... Emerson Sanches emerson.sanc...@gmail.com [oracle_br]
        • Re: ... jlchia...@yahoo.com.br [oracle_br]
        • RE: ... 'Schiavini' et...@schiavini.inf.br [oracle_br]
          • ... Emerson Sanches emerson.sanc...@gmail.com [oracle_br]

Responder a