J'essaie de faire un défilement hebdomadaire pour voir si un utilisateur a assisté ou non à un événement. Cependant, je souhaite seulement les lister comme « Non assisté » s'ils ont assisté à la semaine dernière . Par exemple, si un utilisateur a assisté aux semaines 1 et 7, il ne sera compté comme « non présent » que les semaines 2 et 8.
Exemple simplifié de données :
Tableau Événements qui comprend toutes les dates d'événements (hebdomadaires) et les identifiants d'événements uniques (heure croissante)
Date_Événement | Event_ID |
---|---|
2023-03-09 | 1 |
2023-03-16 | 2 |
2023-03-23 | 3 |
Tableau Utilisateurs affichant les dates des événements et les identifiants auxquels ils ont participé :
Date_Événement | Event_ID | ID_utilisateur |
---|---|---|
2023-03-09 | 1 | 151 |
2023-03-16 | 2 | 151 |
2023-03-23 | 3 | 151 |
2023-03-09 | 1 | 299 |
2023-03-23 | 3 | 299 |
2023-03-16 | 2 | 373 |
Ma question : Comment compléter la sortie suivante en utilisant SQL ? (L'utilisateur 299 a participé à l'activité 1 mais pas à l'activité 2 ; l'utilisateur 373 a participé à l'activité 2 mais pas à l'activité 3)
Missed_Event_Date | Missed_Event_ID | ID_utilisateur |
---|---|---|
2023-03-16 | 2 | 299 |
2023-03-23 | 3 | 373 |
J'ai essayé d'utiliser
SELECT Event_ID + 1, User_ID FROM users u WHERE NOT EXISTS (SELECT 1 FROM events WHERE u.Event_ID=e.Event_ID + 1)
Ne produit pas un résultat correct
En supposant que
Event_ID
augmente de 1, vous pouvez également considérer ce qui suit.