Saya cuba melakukan tatal mingguan untuk melihat sama ada pengguna menghadiri atau tidak menghadiri acara. Namun, saya hanya ingin menyenaraikan mereka sebagai "Tidak Hadir" jika mereka hadir pada minggu lepas . Sebagai contoh, jika pengguna menghadiri minggu 1 dan 7, mereka hanya akan dikira sebagai "tidak hadir" dalam minggu 2 dan 8.
Contoh data ringkas:
Jadual Acara yang merangkumi semua tarikh acara (mingguan) dan ID acara unik (masa menaik)
Tarikh_Peristiwa | Event_ID |
---|---|
2023-03-09 | 1 |
2023-03-16 | 2 |
2023-03-23 | 3 |
Jadual Pengguna menunjukkan tarikh acara dan ID yang mereka hadiri:
Tarikh_Peristiwa | Event_ID | ID_Pengguna |
---|---|---|
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 |
Soalan saya: Bagaimana untuk melengkapkan output berikut menggunakan SQL? (Pengguna 299 mengambil bahagian dalam aktiviti 1 tetapi bukan aktiviti 2; pengguna 373 menyertai aktiviti 2 tetapi bukan aktiviti 3)
Tarikh_Peristiwa_Terlepas | ID_Acara_Terlepas | ID_Pengguna |
---|---|---|
2023-03-16 | 2 | 299 |
2023-03-23 | 3 | 373 |
Saya cuba menggunakan
SELECT Event_ID + 1, User_ID FROM users u WHERE NOT EXISTS (SELECT 1 FROM events WHERE u.Event_ID=e.Event_ID + 1)
Tidak menghasilkan output yang betul
Andaikan
Event_ID
meningkat sebanyak 1, anda juga boleh mempertimbangkan perkara berikut.