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