我正在使用MySQL版本5.5。 我有以下的列的事件日誌表:在特定日期查詢組成員的MySQL事件日誌
- ID(INT,自動增量)
- 活動日期(DATE)
- EVENT_TYPE(ENUM '增加了' 或 '已刪除')
- GROUP_ID (INT,外鍵)
- USER_ID(INT,外鍵)
表包含事件的日誌所發生添加或刪除用戶T當o組。例如:
1, '2015年1月10日', 'ADDED',10,200
2, '2015年1月11日', 'ADDED',10,300
3,「2015 - 01-15','REMOVED',10,200
這意味着ID爲「200」的用戶是從1月10日至1月15日(包括兩端)的ID爲「10」的組的成員。
同樣,ID爲「300」的用戶在1月11日成爲ID爲「10」的組的成員,並且仍然是成員。
我該如何構建一個查詢,告訴我哪些用戶是特定日期的一個或多個特定組的成員?
I.e.問題可能是:「在2015年10月24日,哪些用戶是200或300組的成員?」
您的數據庫設計是否已修復,還是可以更改它?這種類型的問題通過表格給出用戶和組之間的關係很容易回答,例如通過讓用戶成爲成員的日期以及用戶離開組的日期。 如果您無法更改設計,則可能必須使用我概述的結構來構建臨時表以提取您正在查找的信息。 –
不幸的是,數據庫設計已修復。我試圖查詢由我沒有源代碼的程序創建的現有數據庫。我正在尋找一種可以表示爲查詢的解決方案,或者作爲一個MySQL過程 - 我寧願不必使用單獨的程序構建額外的臨時表。 – jksoegaard
我假設在2015-10-15知道某人是否是某個組的成員的唯一方法是查看完整日誌,從開頭到指定日期,並查看2015年之前誰成爲成員-10-15,並且在2015-10-15仍是會員。 這個假設是否正確? 你有多少數據,它有多遠? –