Ich versuche wöchentlich zu scrollen, um zu sehen, ob ein Benutzer an einer Veranstaltung teilgenommen hat oder nicht. Allerdings möchte ich sie nur dann als „Nicht besucht“ auflisten, wenn sie letzte Woche anwesend waren . Wenn ein Benutzer beispielsweise die Wochen 1 und 7 besucht hat, wird er nur in den Wochen 2 und 8 als „nicht anwesend“ gezählt.
Vereinfachtes Beispiel für Daten:
Tabelle Ereignisse, die alle Veranstaltungstermine (wöchentlich) und eindeutige Veranstaltungs-IDs (zeitlich aufsteigend)
enthältEvent_Date | Event_ID |
---|---|
09.03.2023 | 1 |
16.03.2023 | 2 |
23.03.2023 | 3 |
Tabelle Benutzer mit den Veranstaltungsdaten und IDs, an denen sie teilgenommen haben:
Event_Date | Event_ID | Benutzer_ID |
---|---|---|
09.03.2023 | 1 | 151 |
16.03.2023 | 2 | 151 |
23.03.2023 | 3 | 151 |
09.03.2023 | 1 | 299 |
23.03.2023 | 3 | 299 |
16.03.2023 | 2 | 373 |
Meine Frage: Wie vervollständige ich die folgende Ausgabe mit SQL? (Benutzer 299 nahm an Aktivität 1, aber nicht an Aktivität 2 teil; Benutzer 373 nahm an Aktivität 2, aber nicht an Aktivität 3 teil)
Verpasstes_Ereignisdatum | Missed_Event_ID | Benutzer_ID |
---|---|---|
16.03.2023 | 2 | 299 |
23.03.2023 | 3 | 373 |
Ich habe es mit
versuchtSELECT Event_ID + 1, User_ID FROM users u WHERE NOT EXISTS (SELECT 1 FROM events WHERE u.Event_ID=e.Event_ID + 1)
Keine korrekte Ausgabe erzeugt
假设
Event_ID
增加 1,您也可以考虑以下内容。