SQL - SELECT ....NOT IN (SELECT....)

 
Vista:

SELECT ....NOT IN (SELECT....)

Publicado por yego (2 intervenciones) el 18/09/2000 00:00:00
Tengo un pequeño problema a la hora de realizar una consulta atacando a una base de datos access desde VB6.
Resulta que al realizar dicha consulta están implicadas 2 tablas ambas tienen un Codigo_es con el que se pueden relacionar.
La una de ellas contiene los registros de establecimiento (principal) y la otra tiene relaciones creadas con establecimientos y zonas; está será un Histórico de relaciones.
Yo para saber los establecimientos de unas determinadas caracteristicas que están libres de relaciones lo que hago es filtrar con una consulta los criterios para esos establecimientos que me interesan y dentro de esa misma consulta hago otra comprobando con un NOT IN que no se encuentren en la tabla de relaciones activas, que la fecha de baja sea nula.
Una select dentro de otra select "unida" por un NOT IN, creo que lanza una consulta por cada registro de la primera select a la seguna select anidada dentro de la primera; Esto es lentiiisimo, por el gran volumen de registros que utilizo.
Lo que yo quiero es optimizar este proceso con algún otro tipo de consulta que pueda sustituir a la clausula IN pero he probado muchos sin resultado alguno.

Si alguien sabe, me gustaria que me ayudaseis.
Siento el ser tan puntilloso en explicar las cosas y explicarlas tan mal.
Un saludo y Muchisimas gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:SELECT ....NOT IN (SELECT....)

Publicado por Noelia (5 intervenciones) el 18/09/2000 00:00:00
Una solución podría ser la de hacer la consulta interna aparte,es decir, haces la consulta interna individualmente y la guardas (p.e. consulta1). Esta consulta tendria los registros cuya fecha de baja NO es nula (que se encuentran en la tabla de relaciones activas)
Una vez en la consulta principal usas la consulta1 como otra tabla normal (p.e. SELECT * FROM consulta1)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:SELECT ....NOT IN (SELECT....)

Publicado por yego (2 intervenciones) el 18/09/2000 00:00:00
Muchas gracias Noelia.
Creo que lo que tu me propones ya lo he realizado, pero en esto hay un problema, ya que si un registro tiene fecha de baja, NO NULA
es porque ha de causar baja para formar parte de otra relacion, con lo que la tabla puede tener establecimentos con fecha de baja que apareceran en la consulta "consulta1", esto lo que me hara sera permitir establecer una nueva relacion con los establecimientos que dentro de esta se reflejen apesar de que pueden tener otra relacion con otra zona ya que solo compruebo los que no tienen fecha de baja, y esto no seria correcto.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:SELECT ....NOT IN (SELECT....)

Publicado por Noelia (5 intervenciones) el 19/09/2000 00:00:00
Si lo que al fin y al cabo quieres es saber si un registro tiene relacion con otro de otra tabla podrias hacer una consulta para saber que registros estan relacionados (con INNER JOIN) y partiendo de ahi,aplicar el filtro que quieras.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:SELECT ....NOT IN (SELECT....)

Publicado por jhoan (1 intervención) el 23/10/2008 21:00:05
marico no sabes lo que dices
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:SELECT ....NOT IN (SELECT....)

Publicado por ken (8 intervenciones) el 19/09/2000 00:00:00
SELECT * FROM TABLA1
WHERE NOT EXISTS (SELECT Codigo_es FROM
TABLA2 WHERE TABLA1.Codigo_es = TABLA2.Codigo_es)

SALUDOS
KFER
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar