Junior,

Com certeza vão ter outras soluções, visto que, do processador lógico humano 
tem muitos modelos ...

Eu pensei em uma solução usando uma FUNCTION que receba o código do pedido e 
pesquise no ITEM_PEDIDO, setando um flag para quando houver VERMELHO e AZUL no 
mesmo pedido. Desta forma, retornando 1 para "existe a condição" neste pedido e 
vc testar na query:

select atributos_diversos
from PEDIDO P, ITEM_PEDIDO I
where p.cod_pedido = i.cod_pedido
and fnc_testa_condicao(p.cod_pedido) = 1
and (p.data_ped between to_date('01/08/2012','dd/mm/yyyy') and 
                        to_date('01/08/2012','dd/mm/yyyy') + .99999);

FNC_TESTA_CONDICAO (p_cod_pedido) return number
is
wflag     number := 0;
wazul     number := 0;
wvermelho number := 0;
begin
  for r2 in (select cor_item from item_pedido 
           where cod_pedido = p_cod_pedido) loop
    if r2.cor_item = 'VERMELHO' then
       wvermelho = wvermelho + 1;
    end if;
    if r2.cor_item = 'AZUL' then
       wazul = wazul + 1;
    end if;
  end loop;
  if wvermelho > 0 and wazul > 0 then
     wflag := 1;
  end if;
  return wflag;
end;


Pode haver algum erro de compilação, pois escrevi direto aqui.

Ederson Elias
DBA Oracle
http://br.linkedin.com/pub/ederson-elias/24/8b/8b0



--- Em oracle_br@yahoogrupos.com.br, Junior <luizcorreiajr@...> escreveu
>
> Um Exemplo:
> 
> /*TABELA TPEDIDO_VENDAS:
> */
> *ID*
>       *NUMERO_DO_**PEDIDO
> *
> 1
>       1
> 2
>       2
> 3
>       3
> 4
>       4
> 5
>       5
> 
> 
> /*TABELA TITENS_PEDIDO_VENDA:
> */
> *ID
> *     *ID_TPEDIDO_VENDAS
> *     *ITEM
> *     *COR_DO_ITEM*
> 1
>       1
>       A
>       AZUL
> 2
>       1
>       B
>       VERMELHO
> 3
>       1
>       A
>       VERDE
> 4
>       2
>       A
>       VERMELHO
> 5
>       3
>       A
>       VERDE
> 6
>       3
>       A
>       VERMELHO
> 7
>       4
>       B
>       VERMELHO
> 8
>       4
>       A
>       AZUL
> 9
>       4
>       A
>       VERMELHO
> 10
>       5
>       A
>       AZUL
> 
> 
> Agora que temos as tabelas, preciso selecionar nas duas tabelas os 
> pedidos que tenham o item com cor azul e com cor vermelho, mas se tiver 
> somente a cor azul ou se tiver somente a cor vermelho, não preciso 
> selecioná-lo.
> Como ficaria, então, a resposta da minha seleção, baseada nos dados acima:
> 
> *ID_PED_VDA
> *     *NUMERO_PED_VENDA*      *ID_ITEM_PED_VDA
> *     *ITEM
> *     *COR_DO_ITEM*
> 1
>       1
>       1
>       A
>       AZUL
> 1
>       1
>       2
>       B
>       VERMELHO
> 4
>       4
>       7
>       B
>       VERMELHO
> 4
>       4
>       8
>       A
>       AZUL
> 4
>       4
>       9
>       A
>       VERMELHO
> 
> 
> Explicando melhor, preciso selecionar pedidos de vendas que possuem 
> itens com a cor azul e itens com a cor vermelho. Este campo cor é 
> preenchido somente com uma cor, então, serão selecionados somente os 
> pedidos que possuirem itens com a cor azul e também com a cor vermelho. 
> Mas os pedidos que tenham itens com azul e não tenham itens com a cor 
> vermelho, não quero trazer nesta seleção e também não quero trazer nesta 
> seleção os pedidos que tenham a cor vermelho mas não tenham a cor azul, 
> resumindo, terão que ter registros com a cor azul e também registros com 
> a cor vermelha no mesmo pedido.
> 
> Obrigado a todos!
> 
> Luiz Junior
> Depto-ti Jowanel
> Oracle 10G


Responder a