我无法可视化要创建的查询的设置。
我有表a(用户)和表b(事件)。对于每一个活动,我都想要一个没有参加的用户列表。
我认为第三个表是必要的,它将用户与事件关联起来,同时包含用户和事件id。如果表中没有用户和事件id的组合,则用户没有参与。
我的查询需要如何查看才能返回未参加每个活动的每个用户的列表?
或者,我可以查询events表,遍历结果,对于每个事件,我可以查询第三个表中没有匹配event id的记录的用户。这似乎效率低下,而且显然是错误的,因为需要进行许多额外的db调用。
foreach ($getEvents as $v) {
SELECT userID FROM users WHERE userID NOT IN (SELECT userID FROM tableC WHERE eventID = '".$v["eventID"]."');
}
如有必要,欢迎提供更多信息。
3条答案
按热度按时间r3i60tvu1#
您可以通过生成所有用户/事件组合来处理此问题。然后,过滤掉那些确实存在的:
x8diyxa72#
如果您只需要一个没有参加任何活动的用户列表,我们可以将users表连接到junction表
C
就这样吧。但是,由于您需要所有事件的报告,因此我们需要不同的方法。一种选择是使用一个日历表,它表示每个用户与每个事件的关系。我们可以通过用户表和事件表之间的交叉连接来生成这个表。然后,左键将此日历表连接到连接表C
.ux6nzvsh3#
尝试此查询!