【发布时间】:2015-04-26 02:42:09
【问题描述】:
我有 5 个表——用户、组、事件、users_groups_link、users_events_link。像这样:
users
user_id
groups
group_id
events
event_id
users_groups_link
user_id
group_id
users_events_link
user_id
event_id
每个事件分配有 2 或 4 个组,每个组包含 8-11 个用户。 user_id=1 是组空缺。 我想确保每个事件都有偶数用户,所以我试图创建一个查询,返回包含奇数用户的所有事件。到目前为止,我有这个:
SELECT user_id,event_id
FROM users,groups,events,users_events_link,users_groups_link
WHERE users.user_id=users_events_link.user_id
AND events.event_id=users_events_link.event_id
AND users.user_id=users_groups_link.user_id
AND groups.group_id=users_groups_link.group_id
AND user_id <> 1
返回分配给他们的所有事件和用户(通过他们的主机组),如下所示:
user_id event_id
56 1001
34 1001
76 1001
45 1001
87 1001
88 1001
54 1001
4 1001
63 1002
69 1002
77 1002
etc.
现在我想通过仅返回分配给他们的奇数用户的事件来进一步优化此查询,即右侧列中其 id 重复奇数次的事件。然后可能通过完全消除 users_id 列并为每个包含奇数用户的事件返回一个事件 ID 来进一步完善它。
我试过使用“count()”和“group by”,但没有得到想要的结果,所以我显然做错了,但我不知道是什么。提前致谢。
【问题讨论】:
-
你想要的结果是?