我遇到了復(fù)雜的 PHP MySQL 查詢問題。我希望你能幫助我。我盡力盡可能清楚地解釋一切。這里有2個(gè)表(活動(dòng)表和活動(dòng)參與者表)這是一對多的關(guān)系注冊信息存儲在活動(dòng)參與者表中。為了清楚起見,我還在解釋中包含了活動(dòng)表。表格活動(dòng)activityId name 1 Activity-012 Activity-023 Activity-034 Activity-04 表格活動(dòng)參與者activityParticipantId activityId personId date 55 1 28115 2020-05-2866 2 34496 2020-05-2867 3 34635 2020-05-2888 4 12992 2020-05-28此處要編寫的查詢必須滿足這些條件。一個(gè)人想要注冊一個(gè)活動(dòng)(例如:activityId -> 1)。然后你得到這個(gè)人的personID(例如:235625)在activityParticipant表中,必須檢查該人之前是否沒有注冊過他想要注冊的活動(dòng),并檢查同一個(gè)人是否已經(jīng)注冊過另一個(gè)活動(dòng),但這兩個(gè)活動(dòng)不屬于同一日期。不幸的是我無法解決這個(gè)問題。我希望你能幫助我。
1 回答
翻過高山走不出你
TA貢獻(xiàn)1875條經(jīng)驗(yàn) 獲得超3個(gè)贊
它實(shí)際上非常簡單 - 您所需要的只是對兩個(gè)相關(guān)列的組合的唯一約束:
ALTER TABLE activityParticipant
ADD UNIQUE (activityId, personId);
現(xiàn)在,當(dāng)您嘗試插入與另一行重復(fù)的行時(shí)(例如人員 235625 想要第二次注冊活動(dòng) 1),查詢將失敗并出現(xiàn)錯(cuò)誤。
要解決“同一個(gè)人在同一日期不能進(jìn)行兩項(xiàng)活動(dòng)”問題,您可以對personId和date執(zhí)行相同的操作:
ALTER TABLE activityParticipant
ADD UNIQUE (date, personId);
現(xiàn)在,235625 號人員無法在同一天注冊兩項(xiàng)不同的活動(dòng)。
- 1 回答
- 0 關(guān)注
- 163 瀏覽
添加回答
舉報(bào)
0/150
提交
取消
