Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > Firebird e Interbase
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 10-08-2005
VRO VRO is offline
Miembro
 
Registrado: abr 2004
Posts: 230
Poder: 20
VRO Va por buen camino
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:

Última edición por VRO fecha: 10-08-2005 a las 21:31:51.
Responder Con Cita
  #2  
Antiguo 10-08-2005
FCORTESL FCORTESL is offline
Registrado
 
Registrado: sep 2003
Posts: 2
Poder: 0
FCORTESL Va por buen camino
Talking 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
Responder Con Cita
  #3  
Antiguo 11-08-2005
VRO VRO is offline
Miembro
 
Registrado: abr 2004
Posts: 230
Poder: 20
VRO Va por buen camino
Smile

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

Mira que no darme cuenta.

Gracias por todo
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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 21:58:17.


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