02/03/2008

ajuda nesse Select

Pessoal,
é o seguinte..
Tenho um select que retorna cdproduto de 1 a 10 por exemplo
e tenho outro select q retorna de 1 a 7

No caso,
queria descobrir quem sao os 3 registros do select 1 q não estao no select 2.
queria ter o retorno cdproduto (8,9,10)

Acho que deu pra entender.. né?
tentei assim mas nao deu.

select cdproduto from compra where cdcompra = 2 and cdproduto
except (select cdproduto from compra where cdcompra = 2 and sativo=´S´)

tentei tbm
e tbm nao deu.

select cdproduto from compra where cdcompra = 2 and cdproduto
not exists (select cdproduto from compra where cdcompra = 2 and sativo=´S´)


alguem sabe como eu faco pra retornar certo a informação???

Alguem pode me ajudar?
obrigado..!!!


Davefloripa

Respostas

04/03/2008

Signori

opa..
nao sei se entendi muito bem mas vai uma sugestao:

select cdproduto from compra where cdcompra = 2 and
cdproduto <> (select cdproduto from compra where cdcompra = 2 and sativo=´S´)

nesse caso vc traria os produtos da compra 2, somente os q o campo sativo = ´N´.
nao sei se e isso q vc quer, mas testa ai e volta a postar qler coisa :wink:


Responder Citar

13/03/2008

Emerson

select cdproduto from compra
where cdcompra = 2 and not cdproduto in
(select cdproduto from compra where cdcompra = 2 and sativo=´S´)


Responder Citar

19/03/2008

Wanderok

amigos,

Os dois SELECTS estao sendo aplicados sobre a mesma tabela.
Isto só faz sentido para TABELAS DIFERENTES.

No caso apontado, sendo a mesma tabela, basta a sintaxe abaixo:

select cdproduto from compra
where cdcompra = 2 and cdproduto and sativo<>´S´


Responder Citar

19/03/2008

Wanderok

Corrigindo:

select cdproduto from compra
where cdcompra = 2 and sativo<>´S´


Responder Citar

20/03/2008

Edu2099

Caso vc precise saber q a 1a query te traz 10 registros e a 2a traz 7 registros e só então separar os diferentes da 1a query, talvez a query abaixo possa te ajudar, mas se for um select simples, o q o wanderok passou já serve.

Aqui uma query que seleciona 2 visões diferentes da mesma tabela e traz os casos que as diferenciam:

create table #compra (cdcompra int, cdproduto int, sativo char(1))

insert into compra select 2, 1, ´S´
insert into compra select 2, 2, ´S´
insert into compra select 2, 3, ´S´
insert into compra select 2, 4, ´S´
insert into compra select 2, 5, ´S´
insert into compra select 2, 6, ´S´
insert into compra select 2, 7, ´S´
insert into compra select 2, 8, ´N´
insert into compra select 2, 9, ´N´
insert into compra select 2, 10, ´N´

select
a.cdproduto 
from 
compra a left join compra b
on
a.cdcompra =b.cdcompra
and a.cdproduto=b.cdproduto
and b.sativo=´S´
where
a.cdcompra = 2 
and b.cdproduto is null


Abraço!


Responder Citar