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-11-2004
jbetancurt jbetancurt is offline
Registrado
 
Registrado: nov 2004
Posts: 6
Poder: 0
jbetancurt Va por buen camino
Mostrar campos que no esten en una tabla

Un saludo al foro, este es mi primer post y pues espero ser lo suficientemente claro.
Tengo un procedimiento almacenado (En firebird 1.5) el cual me crea un ciclo de horas, las cuales uso en diferentes consultas y en otros procedimientos, al realizar un "select" sobre este obtengo algo como esto:

Parámetros horaini = '7:00', horafin ='8:00', intervalo = 2 (el valor de intervalo se multiplica por 5) y los demás parámetros son null

Código SQL [-]
  Select HoraSalida from P_ObtenerHoras('7:00','8:00',2,Null,Null)
Código:
HoraSalida
7:00 a.m.
7:10 a.m.
7:20 a.m.
7:30 a.m.
7:40 a.m.
7:50 a.m.
8:00 a.m.
y tengo una tabla llamada TUnidades y contiene 4 campos los cuales son FFecha, FHora, FNumeroUnidad, FNombre, al hacer un "select" obtengo algo como esto:
Query_TUnidades:

Código SQL [-]
select Fhora from TUnidades where  FFecha = cast('now' as date) and FNumeroUnidad = 1

Código:
   Ffecha
7:10 a.m.
7:30 a.m.
7:50 a.m.
8:00 a.m.
ahora... quiero filtrar los resultados del procedimiento cruzandolo con la tabla, y que solo me muestre los valores que no estén en el resultado del query realizado en la tabla es decir los siguientes valores:

Código SQL [-]
Select HoraSalida from P_ObtenerHoras('7:00','8:00',2,Null,Null) Where HoraSalida <> Query_TUnidades

Código:
HoraSalida
7:00 a.m.
7:20 a.m.
7:40 a.m.
a continuación mando el codigo del procedimiento almacenado.

Código SQL [-]
SET TERM ^^ ;
CREATE PROCEDURE P_OBTENERHORAS (
  HORA_INI Time,
  HORA_FIN Time,
  INTERVALO Integer,
  PARADAINI Time,
  PARADAFIN Time)
 returns (HORASALIDA Time)
AS
begin
  HORASALIDA= HORA_INI;
  SUSPEND;
  INTERVALO = INTERVALO * 300;   /*Aquí defino que el intervalo minimo es de 5 min*/
  WHILE(HORASALIDA< HORA_FIN ) DO
  BEGIN
    if (((paradaini-(2*intervalo)) < HORASALIDA) and ((paradafin-300) > HORASALIDA)) then
      HORASALIDA= paradafin;
    else
      HORASALIDA=HORASALIDA+ INTERVALO;
    SUSPEND;
  END
end
^^
SET TERM ; ^^
Responder Con Cita
  #2  
Antiguo 10-11-2004
athlontado athlontado is offline
Miembro
 
Registrado: sep 2004
Ubicación: Almázcara - León (España)
Posts: 63
Poder: 20
athlontado Va por buen camino
Mira a ver si te sirve esto:

Código:
Select HoraSalida from P_ObtenerHoras('7:00','8:00',2,Null,Null)
  Where HoraSalida NOT IN (select Fhora from TUnidades where  FFecha = cast('now' as date) and FNumeroUnidad = 1)
__________________
Óscar Salvador Páez
Aprendiendo a aprehender de quienes aprehenden, sin cerciorarse de sus edades, culturas, sexos, razas, creencias u orígenes, es la forma más sabia de aprehender.
Responder Con Cita
  #3  
Antiguo 11-11-2004
jbetancurt jbetancurt is offline
Registrado
 
Registrado: nov 2004
Posts: 6
Poder: 0
jbetancurt Va por buen camino
Gracias

OK todo salio tal cual necesitaba.
Me toca que aprender ma SQL...
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 00:48:28.


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