Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > SQL
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 10-09-2003
ebeltete ebeltete is offline
Miembro
 
Registrado: may 2003
Posts: 236
Poder: 22
ebeltete Va por buen camino
consulta con fecha de nacimiento

Hola amigos del foro, trabajo con DELPHI 5 y tablas PARADOX, tengo dos tablas una padres.db y otra hijos.db, estan relacionadas con el campo hijos_cod, donde un renglon de la tabla padres hace referencia a uno o más renglones de la tabla hijos; ademas la tabla padres.db tiene dos campos tipo date uno para la fecha de nacimiento del padre y otro para el de la madre, en tanto la tabla hijos.db tiene un campo tipo date para la fecha de nacimiento del hijo.
Mi pregunta es como puedo hacer una consulta para que me devuelva todos los padres, madres e hijos que cumplan año en el día de hoy???
probe con EXTRACT pero solo con una tabla no he podido con las dos, tal vez con UNION, agradezco una ayuda, saludos.
Responder Con Cita
  #2  
Antiguo 10-09-2003
Avatar de javiermorales
javiermorales javiermorales is offline
Miembro
 
Registrado: may 2003
Ubicación: Alicante
Posts: 272
Poder: 22
javiermorales Va por buen camino
Hola, has comentado que tienes unidas las tablas padre e hijo con un código, pero ¿tienes un registro diferente en la tabla padres, para la madre y para el padre o existe un solo registro?.
Responder Con Cita
  #3  
Antiguo 10-09-2003
Avatar de marcoszorrilla
marcoszorrilla marcoszorrilla is offline
Capo
 
Registrado: may 2003
Ubicación: Cantabria - España
Posts: 11.221
Poder: 10
marcoszorrilla Va por buen camino
Bueno primera parte, a mi entender como lograr extraer de la tabla que sea las fechas que coinciden con la del día en que estamos, tratandose de Paradox, no nos permite incluir Date dentro del Sql, quedaría así la seleccion:

Código:
procedure TForm1.Button1Click(Sender: TObject);
Var
nDia:Word;
nMes:Word;
nAgnus:Word;
begin
DecodeDate(Date,nAgnus,nMes,nDia);
Query1.Close;
Query1.Sql.Clear;
Query1.Sql.Add('Select fecha, busqueda from Factura');
Query1.Sql.Add('Where Extract(Month From Fecha)= '+IntToStr(nMes));
Query1.Sql.Add('And Extract(Day From Fecha) = '+IntToStr(nDia));
Query1.Open;
end;
Yo a modo de ejemplo he seleccionado 2 campos de una tabla que tenía a mano, habrá que reconvertir el SQL a tu conveniencia.

Bueno pues con esta idea, que no desarrollo, puedes obtener lo que quieres.

1º.- Create Table xxxxxx tendra los campos que se necesiten.

2º.- Ejecutar el SQL anterior, pero con la clausula INSERT sobre la tabla recien creada.(Tabla Padres),

3º.- Lo mismo con la tabla Hijos.

4º.- Mostramos los resultados conectando una rejilla a la tabla creada que por ejemplo se podría llamar aniversarios.


El resto lo dejo para que lo desarrolles tu mismo.

Un Saludo.
__________________
Guía de Estilo de los Foros
Cita:
- Ça c'est la caisse. Le mouton que tu veux est dedans.
Responder Con Cita
  #4  
Antiguo 11-09-2003
Avatar de guillotmarc
guillotmarc guillotmarc is offline
Miembro
 
Registrado: may 2003
Ubicación: Huelva
Posts: 2.638
Poder: 24
guillotmarc Va por buen camino
Hola.

No me parece necesario crear una tabla temporal para recoger el resultado, puede hacer 3 consultas : una para seleccionar los padres que tienen cumpleaños en la fecha, otra para las madres, y una tercera para los hijos. Finalmente para que estén todos los datos en un DataSet, se pueden unir las 3 consultas en un TQuery mediante el UNION.

No he trabajado con Paradox, pero la sintaxis debe ser algo parecido a :

Código:
  SELECT NombrePadre As Nombre, NacimientoPadre As Nacimiento
  FROM Padres
  WHERE Extract(Month from NacimientoPadre) = :MES and
        Extract(Day from NacimientoPadre) = :DIA
UNION
  SELECT NombreMadre, NacimientoMadre  
  FROM Padres
  WHERE Extract(Month from NacimientoMadre) = :MES and
        Extract(Day from NacimientoMadre) = :DIA
UNION
  SELECT Nombre, Nacimiento
  FROM Hijos
  WHERE Extract(Month from Nacimiento) = :MES and
        Extract(Day from Nacimiento) = :DIA
NOTA : He supuesto que en la tabla Padres, están los dos progenitores en un mismo registro. En caso contrario aún es más senzillo, puesto que sería simplemente un UNION de dos consultas (una para cada tabla).

Saludos
__________________
Marc Guillot (Hi ha 10 tipus de persones, els que saben binari i els que no).

Última edición por guillotmarc fecha: 11-09-2003 a las 00:25:07.
Responder Con Cita
  #5  
Antiguo 11-09-2003
Avatar de marcoszorrilla
marcoszorrilla marcoszorrilla is offline
Capo
 
Registrado: may 2003
Ubicación: Cantabria - España
Posts: 11.221
Poder: 10
marcoszorrilla Va por buen camino
Tienes toda la razón Marc, la verdad es que dada la hora solamente pensaba poner el código para seleccionar quienes cumplen años y no entrar en detalles. Y luego por efectos de la hora me enrede en la explicación.

Por lo tanto mantengo el código, pero no la continuación, es mucho más simple como dice Marc Guillot, es decir uniendo las sucesivas consultas mediante la clausula SQL UNION, que por otra parte es como debe de hacerse.

Un Saludo.
__________________
Guía de Estilo de los Foros
Cita:
- Ça c'est la caisse. Le mouton que tu veux est dedans.
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 16:19:12.


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