Hola a todos, quiero pedirles su ayuda, tengo dos tablas, una padre y su hija (pedidos y detalle de pedidos), necesito con SQL consultar cuáles pedidos tienen la condición de estar requiriendo dos o más productos de códigos específicos. Me explico mejor con un ejemplo:
Pedido DetPedido
------- -----------------------
pedIdPed dpdIdPed dpdIdProducto
101 101 gafas
101 101 camiseta
102 102 gafas
102 102 gorra
102 102 pantaloneta
103 103 camiseta
103 103 medias
103 103 gafas
SELECT pedIdPed
FROM Pedido, DetPedido
WHERE pedIdPed = pdpIdPed AND (dpdIdProducto = 'gafas' AND dpdIdProducto = 'camiseta')
Al hacerlo así no me devuelve filas, cuando cambio AND por OR en la pregunta del producto me devuelve todas las filas, pero necesito es que el resultado de esa consulta sea: 101 y 103
Alguna idea ...
Gracias
Consultar el mismo campo varios valores
Comenzado por
gustavosv
, may 19 2012 10:51
3 respuestas en este tema
#1
Escrito 19 mayo 2012 - 10:51
#2
Escrito 19 mayo 2012 - 11:01
Simplemente deja en la consulta la parte:
y Cambia el AND por OR y agrupalo por el No de Pedido:
Más o menos así sería la consulta.
Saludos.
dpdIdProducto = 'gafas' AND dpdIdProducto = 'camiseta'
y Cambia el AND por OR y agrupalo por el No de Pedido:
SELECT p.pedIdPed, d.dpdldPrducto
FROM Pedido p
LEFT JOIN DetPedido d ON d.pedldPed = p.pedldPed
WHERE d.dpdIdProducto = 'gafas' OR d.dpdIdProducto = 'camiseta'
GROUP BY p.pedldPed, d.dpdldPrducto
ORDER BY p.pedldPed
Más o menos así sería la consulta.
Saludos.
#3
Escrito 19 mayo 2012 - 11:33
Hola, ya lo intenté pero el resultado es el mismo, me aparecen todas 101, 102, 103
#4
Escrito 19 mayo 2012 - 01:06
Hola gustavosv, en la tabla pedido creo deberías tener solo un registro de cada pedido, es que en el ejemplo que colocas como si hubiera tantos pedidos como productos en el. Pregunto porque si no uso un distinct también.
Mmm de momento se me ocurre algo así, este query lo probé en firebird, creo con algunos detalles en access podría funcionar, el detalle esta en el having en donde filtramos por un conteo de productos, chécale y nos dices si te sirve de algo.
Saludos
Mmm de momento se me ocurre algo así, este query lo probé en firebird, creo con algunos detalles en access podría funcionar, el detalle esta en el having en donde filtramos por un conteo de productos, chécale y nos dices si te sirve de algo.
Select pedido.idpedido
From pedido inner join pedidodet on pedido.idpedido = pedidodet.idpedido
Where pedidodet.idproducto in (1,2)
Group by pedido.idpedido
Having count( distinct pedidodet.idproducto) = 2
Saludos