Bonjour,
J'ai besoin de récupérer tous les utilsateurs DISTINCT en excluant ceux qui ne sont pas disponibles en fonction de périodes de temps.
Table user:
Table unavailability:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 +------+-----------+--------------------------------------+ | id | firstname | content | +------+-----------+--------------------------------------+ | 13 | John | ... | | 44 | Marc | ... | | 55 | Elise | ... | +------+-----------+--------------------------------------+
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 +------+-----------+--------------+--------------+ | id | user_id | start | end | +------+-----------+--------------+--------------+ | 1 | 13 | 2019-07-01 | 2019-07-10 | | 2 | 13 | 2019-07-20 | 2019-07-30 | | 3 | 13 | 2019-09-01 | 2019-09-30 | | 4 | 44 | 2019-08-01 | 2019-08-15 | +------+-----------+--------------+--------------|
Par exemple, nous voulons récupérer les utilsateurs qui ne sont disponibles entre les dates 2019-06-20 / 2019-07-05: Marc et Elise sont dispos.
Est-ce que l'on peut utiliser un LEFT JOIN? Cette requête ne fonctionne pas:
Merci pour votre aide,
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 SELECT DISTINCT user.*, unavailability.start, unavailability.end, FROM user LEFT JOIN unavailability ON unavailability.user_id = user.id WHERE unavailability.start < "2019-06-20" AND unavailability.end > "2019-06-20" AND unavailability.start < "2019-07-05" AND unavailability.end > "2019-07-05"
Vincent.
Partager