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 Temas de Hoy

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



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 20:07:58.


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