簡體   English   中英

我該如何解決這個復雜的 MySQL 查詢問題

[英]How can I solve this complicated MySQL Query problem

我遇到了復雜的 PHP MySQL 查詢問題。 我希望你能幫助我。 我盡我所能盡可能清楚地解釋一切。

  • 這里有 2 個表(活動表和 activityParticipant 表)
  • 這里是一對多的關系
  • 注冊存儲在活動參與者表中。 為了清楚起見,我還在解釋中包含了活動表。

表格活動

activityId      name            
1               Activity-01
2               Activity-02
3               Activity-03
4               Activity-04 

表格活動參與者

activityParticipantId   activityId      personId    date            
55                      1               28115       2020-05-28
66                      2               34496       2020-05-28
67                      3               34635       2020-05-28
88                      4               12992       2020-05-28

這里要寫的查詢必須滿足這些條件。

  • 一個人想要注冊一個活動(例如:activityId -> 1)。
  • 然后你得到這個人的personID(例如:235625)
  • 在 activityParticipant 表中,必須檢查此人是否以前沒有注冊過他想注冊的活動,並檢查同一個人是否已經注冊過另一個活動,但是這 2 個活動不屬於同一個日期。

不幸的是我無法解決這個問題。 我希望你能幫助我。

提前致謝

這實際上很容易——您所需要的只是對兩個相關列的組合的 UNIQUE 約束:

ALTER TABLE activityParticipant
ADD UNIQUE (activityId, personId);

現在,當您嘗試插入與另一行重復的行時(例如 person 235625 想要第二次注冊活動 1),查詢將失敗並出現錯誤。

要解決“同一個人在同一日期沒有兩項活動”的問題,您可以對personIddate執行相同的操作:

ALTER TABLE activityParticipant
ADD UNIQUE (date, personId);

現在,人 235625 無法在同一日期注冊兩個不同的活動。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM