> >CREATE CURSOR Etats (dDebut D, dFin D , iresidentid i , iid i ) > > > *-- je veux touver toutes les dates comprises entre le {^2005/01/08} > *-- et le {^2005/06/25} pour le resident 1753 > > INSERT INTO Etats VALUES ({^2005/01/08}, {^2005/03/30} , 1753 , 1 ) > INSERT INTO Etats VALUES ({^2005/04/10}, {^2005/06/25} , 1753 , 2 ) > INSERT INTO Etats VALUES ({^2005/01/10}, {^2005/06/25} , 1754 , 3 ) > INSERT INTO Etats VALUES ({^2006/01/10}, {^2007/05/25} , 1756 , 4 ) > INSERT INTO Etats VALUES ({^2006/05/30}, {^2007/06/25} , 1756 , 5 ) > INSERT INTO Etats VALUES ({^2001/01/08}, {^2003/03/30} , 2 , 6 ) > > && (1) > && min and max dates: entre le {^2005/01/08} et le {^2005/06/25} pour chaque resident > SELECT MIN(dDebut) AS MinDate, ; > MAX(dFin) AS Maxdate ; > FROM Etats ; > INTO CURSOR MinMax > > && (2) > SELECT DISTINCT iresidentid ; > FROM Etats ; > INTO CURSOR Resident ; > > && (3) > SELECT Resident.iresidentid, ; > dDate, ; > dDebut ; > FROM Resident ; > JOIN dDate ; > ON ( dDate BETWEEN MinMax.MinDate AND MinMax.Maxdate ) ; > LEFT JOIN Etats ON ; > ( (Resident.iresidentid = Etats.iresidentid) ; > AND ; > ( dDate BETWEEN dDebut AND dFin ) ; > ) ; > INTO CURSOR tmp ; > HAVING ( dDebut IS NULL ) > >> SET