Bonjour,
J'ai un petit problème pour définir correctement une condition sur une période de dates en SQL.
Voila la base, j'ai une table de "personnes" et une table "agenda". La table agenda contient des champs "DébutAbsence" et "FinAbsence"
Le champ FinAbsence peut être vide ce qui veut dire qu'on ne sait pas combien de temps la personne va rester absente.
Le problème c'est que je n'arrive pas a sélectionner uniquement les personnes présentes.
Dans ma sélection j'ai donc besoin des personnes qui n'ont rien dans l'agenda (pas de lien personne-agenda) et des personnes qui ne sont pas dans la période d'absence de leur agenda.
Quelle est la bonne syntaxe ???
J'ai une requete du genre:
Je n'arrive pas a bien trouver la condition pour prendre les personnes actuellement présentes. Les différents cas que j'ai essayé ne fonctionnenent pas car s'il y a une absence précédente (et donc terminée)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 Select * from personnes left join agenda on personnes.id = agenda.id_personne where ...... la je suis perdu
la requete n'affiche pas cette personne alors qu'elle devrait l'être. (ex: un absent du 01/06/2010 au 06/06/2010) n'est pas repris alors qu'il devrait l'être.
Pour résumer:
à la date du 08/07/2010 la requete devrait traiter les cas suivants comme ceci.
* Une personne sans ligne agenda ==> afficher
* Une personne avec agenda debut: 01/06/2010 et fin 06/06/2010 ==> afficher
* Une personne avec agenda debut: 01/06/2010 et fin est vide ==> ne pas afficher
* Une personne avec agenda debut: 01/08/2010 et fin est vide ==> afficher
* Une personne avec agenda debut: 15/07/2010 et fin 21/07/2010 ==> afficher
* Une personne avec agenda debut: 05/07/2010 et fin 12/07/2010 ==> ne pas afficher
Je n'arrive pas a trouver la bonne condition....
Partager