FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
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. |
#2
|
||||
|
||||
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?.
|
#3
|
||||
|
||||
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; 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:
|
#4
|
||||
|
||||
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 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. |
#5
|
||||
|
||||
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:
|
|
|
|