Ir al contenido



Foto

Consultar el mismo campo varios valores


  • Por favor identifícate para responder
3 respuestas en este tema

#1 gustavosv

gustavosv

    Newbie

  • Miembros
  • Pip
  • 5 mensajes

Escrito 19 mayo 2012 - 10:51

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
  • 0

#2 enecumene

enecumene

    Webmaster

  • Administrador
  • 7.239 mensajes
  • LocationRepública Dominicana

Escrito 19 mayo 2012 - 11:01

Simplemente deja en la consulta la parte:

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.
  • 0

#3 gustavosv

gustavosv

    Newbie

  • Miembros
  • Pip
  • 5 mensajes

Escrito 19 mayo 2012 - 11:33

Hola, ya lo intenté pero el resultado es el mismo, me aparecen todas 101, 102, 103  :(
  • 0

#4 fredycc

fredycc

    Advanced Member

  • Moderadores
  • PipPipPip
  • 874 mensajes
  • LocationOaxaca, México

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.


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
  • 0