Array
(
)

ajuda nesse Select

Davefloripa
   - 02 mar 2008

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..!!!

Signori
   - 04 mar 2008

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:

Emerson
   - 13 mar 2008

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

Wanderok
   - 19 mar 2008

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´

Wanderok
   - 19 mar 2008

Corrigindo:

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

Edu2099
   - 20 mar 2008

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:

#Código

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!