Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > SQL
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 17-10-2014
gustavosv gustavosv is offline
Miembro
 
Registrado: mar 2008
Posts: 51
Poder: 17
gustavosv Va por buen camino
Hola dec, no me serviría porque necesito preguntar por el Producto, es decir no conozco cuales Pedidos tienen los 2 productos (de acuerdo al ejemplo).

Había intentado lo siguiente:
Código SQL [-]
SELECT * FROM NombreTabla
WHERE (IdProducto = 'TORNILLO') OR (IdProducto = 'TUERCA')

pero evidentemente el resultado son los Pedidos que tienen el Producto TORNILLO 'o' el Producto TUERCA, según el ejemplo serían el 101, 102 y 103, y lo que necesito son los Pedidos que tienen AMBOS Productos, el 101.

Ahora, si en lugar de OR utilizo AND, siempre será un resultado vacio ya que ningún Producto podría llamarse al mismo tiempo TORNILLO Y TUERCA.
Responder Con Cita
  #2  
Antiguo 17-10-2014
[FGarcia] FGarcia is offline
Miembro Premium
 
Registrado: sep 2005
Ubicación: Cordoba, Veracruz, México
Posts: 1.123
Poder: 20
FGarcia Va por buen camino
Menos indicado yo!!!

Código:
SELECT * FROM NombreTabla
WHERE (IdProducto = 'TORNILLO') AND (IdProducto = 'TUERCA')
GROUP BY NroPedido
__________________
ESTO ES UN FORO ... NO UN MÓVIL
¿Por qué no escribir de una manera comprensible para que los humanos lo podamos entender?
Responder Con Cita
  #3  
Antiguo 17-10-2014
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Se me ocurre esto, pero no sé si sirva:

Código SQL [-]
select NroPedido from pedidos p
where
  'Tornillo' in (select distinct IdProducto from pedidos q where q.NroPedido = p.NroPedido) and
  'Tuerca' in (select distinct IdProducto from pedidos q where q.NroPedido = p.NroPedido)

// Saludos
Responder Con Cita
  #4  
Antiguo 17-10-2014
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola gustavosv.

Otra opción:
Código SQL [-]
SELECT T1.NROPEDIDO
FROM TABLA T1
WHERE T1.IDPRODUCTO = :IDPROD1
AND EXISTS (SELECT IDPRODUCTO FROM TEST T2
            WHERE T2.NROPEDIDO = T1.NROPEDIDO AND T2.IDPRODUCTO = :IDPROD2)

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #5  
Antiguo 17-10-2014
orodriguezca orodriguezca is offline
Miembro
 
Registrado: ene 2009
Posts: 221
Poder: 16
orodriguezca Va por buen camino
Usando Having

Creo que esto funcionaría :

Código SQL [-]
select R1.NROPEDIDO
  from DETPEDIDO R1
  where R1.IDPRODUCTO in ('TORNILLO', 'TUERCA')
  group by R1.NROPEDIDO
  having Count(*) >= 2; -- 2 es elnumero de diferentes idProducto buscados

También se me ocurrió esto otro, que es un poco más rebuscado, pero en ciertas situaciones puede darnos algo de flexibilidad adicional, siempre y cuando nuestro motor de bases de datos pueda realizar consultas CTE (common-table-expresion) (por lo menos Firebird, Sql Server y db2 pueden):

Código SQL [-]
with R1 as (
  select NROPEDIDO
    from DETPEDIDO 
    where IDPRODUCTO = 'TORNILLO'),
R2 as (
  select NROPEDIDO
     from DETPEDIDO
     where IDPRODUCTO = 'TUERCA'
)
select R1.NROPEDIDO
  from R1
  inner join R2
      on R1.NROPEDIDO = R2.NROPEDIDO;
Responder Con Cita
  #6  
Antiguo 17-10-2014
gustavosv gustavosv is offline
Miembro
 
Registrado: mar 2008
Posts: 51
Poder: 17
gustavosv Va por buen camino
LISTO !!!

Muchas gracias a todos por sus respuestas y mis respetos.

Me funcionaron perfecto las ideas de Roman y Ecfisa, la una va más rápido que la otra pero se obtiene el mismo resultado correcto, la primera de Orodriguezca la probé y no me funcionó ya que el resultado es como si usara mi opción de OR, bueno en últimas para eso es IN, y la segunda no trabajó en MySQL.

De nuevo gracias por su ayuda !

GustavoSV
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Cómo puedo hacer para que una variable valga 2 valores al mismo tiempo wlad Internet 15 19-12-2007 18:06:03
Porque me marca error en mis querys si utilizo el mismo para diferentes consultas zcatzz SQL 7 27-01-2007 13:10:37
Recorrer todos los registros de una tabla que tengan el mismo campo Sayuri Conexión con bases de datos 3 08-12-2005 16:07:46
Campo de tabla con valores con un mismo nombre kakesoft Conexión con bases de datos 14 28-11-2005 14:40:46


La franja horaria es GMT +2. Ahora son las 20:17:36.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi