Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Firebird e Interbase (https://www.clubdelphi.com/foros/forumdisplay.php?f=19)
-   -   Problema conuna consulta select...not in (select ...) (https://www.clubdelphi.com/foros/showthread.php?t=24173)

VRO 10-08-2005 20:29:32

Problema conuna consulta select...not in (select ...)
 
Hola , estoy un poco desesperada porque no veo cual es
el fallo en la consulta, me pasa una cosa un tanto estraña.

Vereis la consulta que yo hago es la siguiente:

Código Delphi [-]
  SELECT DISTINCT      
  RESERVA.COD_R,RESERVA.FECHAI,RESERVA.FECHAF,
RESERVA.FECHA_SUS,REGIMEN.TIPO,RESERVA.ENTRADA_REG,
RESERVA.ADULTO,RESERVA.NINO,RESERVA.BEBE,RESERVA.ESTADO,
HAB_RESERVADA.COD_HAB
  FROM RESERVA,CLIENTE,EMPRESA,REGIMEN,HAB_RESERVADA
  WHERE RESERVA.COD_R=HAB_RESERVADA.COD_R
  AND RESERVA.COD_REG=REGIMEN.COD_REG
  AND ((RESERVA.FECHAI>=:FI) AND
 (RESERVA.FECHAF<=:FF)) OR 
((RESERVA.FECHAF>=:FI) AND (RESERVA.FECHAF<=:FF)
 AND (RESERVA.FECHAF<=:FF) AND (RESERVA.DIFMES>=:FI) 
AND (RESERVA.DIFMES<=:FF))OR ((RESERVA.FECHAI>=:FI) 
AND (RESERVA.DIFMES>:FF))
 AND RESERVA.COD_R NOT IN (SELECT distinct(ESTANCIA.COD_R) 
FROM ESTANCIA)

Lo que yo pretendo conseguir es que ademas de que la reserva se
encuentre entre esas 2 fechas FI y FF y coincida con una habitacion de la tabla hab_reservada y con un regimen de la tabla regimen no se encuentre en la tabla estancia. Pues bien los resultados con la consulta bien hecha
son:

Código:

108
 110


y no me tienen que salir ninguno de aqui:
Código:

88
111
113
114

pero lo que me sale a mi varia dependiendo de si este trozo de codigo
que os pongo a continuacion lo pongo inmediatamente detras del where ó como aparece en la 1ª consulta delphi.

Código Delphi [-]
RESERVA.COD_R NOT IN (SELECT distinct(ESTANCIA.COD_R) FROM ESTANCIA)

Si lo pongo detras del where sale esto
Código:

108
        110
      113
      114

lo 2 ultimos resultador no tendrian que salir, y si por el contrario lo
pongo al final
Código:

  108
110
88
111

.Despues de toda esta parrafada como puedo hacer para acotar
en la consulta y que me saque las reservas (cod_r) que cumplan :
no esten en la tabla estancias y ademas que tengan las codiciones
de fecha anteriores (Fi, FF)

Espero no haberme liado demasiado. POr favor si no entendeis algo
de lo que os explico me lo comunicais.

Es sumamente necesario:

FCORTESL 10-08-2005 21:03:03

tu problema
 
Me parece que tu problema es el OR porque lo tienes abierto para las consiciones siguientes. Prueba colocandole unos parentecis de la siguiente manera:

AND ( ((RESERVA.FECHAI>=:FI) AND
(RESERVA.FECHAF<=:FF)) OR
((RESERVA.FECHAF>=:FI) AND (RESERVA.FECHAF<=:FF) ) AND

VRO 11-08-2005 08:56:35

Mil Gracias has resuelto mi problema. Los parentesis ().

:( Mira que no darme cuenta.

Gracias por todo


La franja horaria es GMT +2. Ahora son las 14:51:42.

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