>Hola grupo.
>Tengo 3 tablas : Tabla1 , Tabla2 y Tabla3
>
>
>Tabla1 : tabla1.id, tabla1.desc
>Tabla2 : tabla2.id, tabla2.tabla1_id, tabla2.desc
>Tabla3 : tabla3.id, tabla3.tabla1_id, tabla3.fecha
>
>
>tabla1.id tabla1.desc
>-------------------------
>1 Pedro
>2 Juan
>3 Alberto
>
>
>
>tabla2.id tabla2.desc tabla2.tabla1_id
>----------------------------------------
>100 casa 1
>101 auto 1
>102 casa 2
>103 yate 2
>104 auto 3
>105 casa 3
>
>
>tabla3.id tabla3.fecha tabla3.tabla1_id
>------------------------------------------
>1000 01/10/2002 1
>1001 06/10/2002 1
>1002 07/11/2002 2
>1003 08/11/2002 2
>1004 08/11/2002 3
>1005 10/11/2002 3
>
>
>
>Lo que necesito es una consulta que me muestre todos los registros de tabla1 con sus respectivos registros de tabla2 y el campo tabla3.id del valor maximo sobre tabla3.fecha
>
>o sea me deberia quedar algo asi algo asi :
>
>tabla1.id tabla1.nombre tabla2.desc tabla3.id
>---------------------------------------------------------
>1 Pedro casa 1001
>1 Pedro auto 1001
>2 Juan casa 1003
>2 Juan yate 1003
>3 Alberto auto 1005
>3 Alberto casa 1005
>
>
>¿ Es posible eso ?
>Gracias de antemano.
A ver, veamos si puedo hacer algo. Creo que sería algo así como lo siguiente:
Primero, unir las dos primeras tablas.
select id, desc from Tabla1 into cursor Temp1
Ahora, obtener la fecha mayor para cada grupo de Tabla3.
select Tabla1_id, max(Fecha) as Fecha;
from Tabla3;
into cursor Temp2
En base a esas fechas, obtener el número mayor.
select Temp2.*, Tabla3.Id as Tabla3_id;
from Temp2 join Tabla3;
on Temp2.Fecha = Tabla3.Fecha;
and Temp2.Id = Tabla3.Tabla1_id;
into cursor Temp3
Finalmente, unir todos los resultados, de los cursor Temp1 y Temp3.
Espero que funcione, sin demasiadas adaptaciones.
Notas:
Quizás puedas combinar algunas de las órdenes, en menos órdenes SQL - SELECT.
Sin embargo, para fines de informes, frecuentemente es más rápido tener varias órdenes separadas.
A veces, una función de búsqueda puede ser más rápida que un SQL - SELECT "rebuscado". Puede que fracciones de segundo no te importen, pero si hallas que el rendimiento es demasiado lento,hay que probar un poco con diferentes alternativas.
Saludos,
Hilmar.
Difference in opinions hath cost many millions of lives: for instance, whether flesh be bread, or bread be flesh; whether whistling be a vice or a virtue; whether it be better to kiss a post, or throw it into the fire... (from Gulliver's Travels)