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 12-08-2008
mjjj mjjj is offline
Miembro
 
Registrado: mar 2007
Posts: 652
Poder: 18
mjjj Va por buen camino
Sql In

Hola, necesito hacer una consulta que va algo asi:

Código SQL [-]
select * from tabla where empresa ='MMM' and
NOC IN (SELECT NOC FROM detcompras WHERE EMPRESA ='MMM' AND DESCRIP_INS LIKE '%clavo%'

realizo esta consulta y se queda pegado... se puede hacer, esto??
Responder Con Cita
  #2  
Antiguo 12-08-2008
Avatar de Caro
*Caro* Caro is offline
Moderadora
 
Registrado: jul 2004
Ubicación: Cochabamba, Bolivia
Posts: 2.544
Poder: 22
Caro Va por buen camino
Hola mjjj, si se puede hacer eso, a que te refieres con que se queda pegado.

Saluditos
__________________
Disfruten cada minuto de su vida a lado de sus seres queridos como si fuese el ultimo, uno nunca sabe lo que puede pasar.
Responder Con Cita
  #3  
Antiguo 13-08-2008
mjjj mjjj is offline
Miembro
 
Registrado: mar 2007
Posts: 652
Poder: 18
mjjj Va por buen camino
He probado la sentencia SQL en varios programas...
En el IBExpert, realizo la consulta y nunca devuelve una respuesta.... se queda pegado el programa....

Sera que esta mal escrita la sentencia SQl

Gracias... saludos
Responder Con Cita
  #4  
Antiguo 13-08-2008
Avatar de Caro
*Caro* Caro is offline
Moderadora
 
Registrado: jul 2004
Ubicación: Cochabamba, Bolivia
Posts: 2.544
Poder: 22
Caro Va por buen camino
En la consulta que has puesto, lo unico que veo que le falta es un parentesis al final, pero cuando ejecutas la consulta debería salirte un mensaje de error por ese parentesis. Dices que no devuelve resultado, talvez sea porque el Select que toma el In no devuelve registros.

Código SQL [-]
select * from tabla where empresa ='MMM' and
NOC IN (SELECT NOC FROM detcompras WHERE EMPRESA ='MMM' AND DESCRIP_INS LIKE '%clavo%')

Saluditos
__________________
Disfruten cada minuto de su vida a lado de sus seres queridos como si fuese el ultimo, uno nunca sabe lo que puede pasar.
Responder Con Cita
  #5  
Antiguo 13-08-2008
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.286
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Habría que ver que datos maneja esa consulta y revisar el plan de ejecución.
Los LIKE no es que se an muy óptimos y dependiendo de los datos puede ser muy costoso y el NOT IN, tampoco ayuda.

Intenta ejecutarla con un rango pequeño de datos y revisa los índices que tienes en las tablas.

Revisa que no se esté produciendo ningun bloqueo (deadlock) en la Bd mientras la ejecutas (no comentas si hay más procesos trabajando). aunque eso debería "saltar" al cabo de un rato por TimeOut/Deadlock.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #6  
Antiguo 13-08-2008
hecospina hecospina is offline
Miembro
 
Registrado: oct 2007
Posts: 202
Poder: 17
hecospina Va por buen camino
HolaLa consulta debe funcionarlo primero es determinar si la segunda consulta devuelve resultados
Código SQL [-]
SELECT NOC FROM detcompras WHERE EMPRESA ='MMM' AND DESCRIP_INS LIKE '%clavo%'
y te recomendaria que colocaras alias a las tablas
Código SQL [-]
 select d.* from tabla d where d.empresa ='MMM' andNOC IN (SELECT t.NOC FROM detcompras t WHERE t.EMPRESA ='MMM' AND t.DESCRIP_INS LIKE '%clavo%')
Espero te funcione
Responder Con Cita
  #7  
Antiguo 14-08-2008
mjjj mjjj is offline
Miembro
 
Registrado: mar 2007
Posts: 652
Poder: 18
mjjj Va por buen camino
hice lo que me sugeriste... funciono, pero se demoro unos 7 minutos en entregarme la respuesta... que fueron 2 registros!!

porque sera esto??

que otro codigo que puede servir para lo mismo??
Responder Con Cita
  #8  
Antiguo 14-08-2008
luisgutierrezb luisgutierrezb is offline
Miembro
 
Registrado: oct 2005
Ubicación: México
Posts: 925
Poder: 19
luisgutierrezb Va por buen camino
Te podra Servir:

Código SQL [-]
Select tabla.* from tabla
inner join detcompras on detcompras.noc = tabla.noc
where tabla.empresa = 'MMM' and detcompras.DESCRIP_INS LIKE '%clavo%'
Responder Con Cita
  #9  
Antiguo 15-08-2008
Avatar de Caro
*Caro* Caro is offline
Moderadora
 
Registrado: jul 2004
Ubicación: Cochabamba, Bolivia
Posts: 2.544
Poder: 22
Caro Va por buen camino
Cita:
Empezado por mjjj Ver Mensaje
hice lo que me sugeriste... funciono, pero se demoro unos 7 minutos en entregarme la respuesta... que fueron 2 registros!!

porque sera esto??

que otro codigo que puede servir para lo mismo??
Como te indica luisgutierrezb puedes hacer un join directo entre tus dos tablas, otra cosita, tienes indices definidos en tus tablas, porque tenerlos ayuda mucho en la velocidad de las busquedas.

Saluditos
__________________
Disfruten cada minuto de su vida a lado de sus seres queridos como si fuese el ultimo, uno nunca sabe lo que puede pasar.
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


La franja horaria es GMT +2. Ahora son las 14:26:45.


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