DUVIDA SELECT PRODUTOS

FUJIOKA 04/05/2010 10:27:53
#340854
olá galera estou com a seguinte dúvida, não sei se há como fazer esse select mas vamos lá:
tb_pedidos
loja_id | pedido_id | produto_id
1 123 30
1 123 500
1 666 30
2 456 30
2 456 600
2 789 30
eu preciso que retorne os pedidos que tenham somente o produto_id 30 se tiver outro junto não retorne, nesse caso da tabela teria que retornar apenas as linhas
loja_id | pedido_id | produto_id
1 666 30
2 789 30
será que tem como fazer isso?
Obrigado.
DIOGOMUNARIN 04/05/2010 11:57:05
#340872
se for 2005 ou superior

declare @tbteste as table(loja_id int, pedido_id int, produto_id int)
insert into @tbteste values(1,123,30)
insert into @tbteste values(1,123,500)
insert into @tbteste values(1,666,30)
insert into @tbteste values(2,456,30)
insert into @tbteste values(2,456,600)
insert into @tbteste values(2,789,30)

;with cte_dados as
(
select ROW_NUMBER() over (partition by loja_id,pedido_id order by loja_id,pedido_id) num,*
from @tbTeste
)
select loja_id, pedido_id, produto_id from cte_dados where produto_id=30 and pedido_id not in (select pedido_id from cte_dados where num >1)

LROSSI 04/05/2010 13:37:26
#340893
usa assim:

select * from tb_pedidos where produto_id=30 group by pedido_id
DIOGOMUNARIN 05/05/2010 12:02:11
#340989
vc pode fazer assim tbm

SELECT
T.loja_id , T.pedido_id, T.produto_id
FROM
@tbteste AS T
WHERE
T.produto_id = 30
AND EXISTS (SELECT 1 FROM @tbteste
WHERE loja_id = T.loja_id AND T.pedido_id = pedido_id
GROUP BY loja_id , pedido_id
HAVING COUNT(pedido_id) = 1
)
ORDER BY
FIREONBOMB 11/05/2010 17:55:33
#341524
select MAX (pedido_id) pedido_id ,loja_id ,produto_id from tbteste
WHERE
produto_id = 30

GROUP BY loja_id ,produto_id
Tópico encerrado , respostas não são mais permitidas