为了账号安全,请及时绑定邮箱和手机立即绑定

如何解决这个复杂的 MySQL 查询问题

如何解决这个复杂的 MySQL 查询问题

PHP
qq_花开花谢_0 2023-09-15 10:24:17
我遇到了复杂的 PHP MySQL 查询问题。我希望你能帮助我。我尽力尽可能清楚地解释一切。这里有2个表(活动表和活动参与者表)这是一对多的关系注册信息存储在活动参与者表中。为了清楚起见,我还在解释中包含了活动表。表格活动activityId      name            1               Activity-012               Activity-023               Activity-034               Activity-04 表格活动参与者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此处要编写的查询必须满足这些条件。一个人想要注册一个活动(例如:activityId -> 1)。然后你得到这个人的personID(例如:235625)在activityParticipant表中,必须检查该人之前是否没有注册过他想要注册的活动,并检查同一个人是否已经注册过另一个活动,但这两个活动不属于同一日期。不幸的是我无法解决这个问题。我希望你能帮助我。
查看完整描述

1 回答

?
翻过高山走不出你

TA贡献1875条经验 获得超3个赞

它实际上非常简单 - 您所需要的只是对两个相关列的组合的唯一约束:


ALTER TABLE activityParticipant

ADD UNIQUE (activityId, personId);

现在,当您尝试插入与另一行重复的行时(例如人员 235625 想要第二次注册活动 1),查询将失败并出现错误。


要解决“同一个人在同一日期不能进行两项活动”问题,您可以对personId和date执行相同的操作:


ALTER TABLE activityParticipant

ADD UNIQUE (date, personId);

现在,235625 号人员无法在同一天注册两项不同的活动。


查看完整回答
反对 回复 2023-09-15
  • 1 回答
  • 0 关注
  • 88 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信