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