小编dac*_*dac的帖子

帮助处理复杂的 MySQL 查询

我之前问过一个关于建模 MySQL 数据建模帮助的问题。建议是标记为角色和发起人的多个表的图表。角色和发起人的多个表

现在我正在尝试编写查询并在苦苦挣扎。这就是我一直放弃并寻找可能更简单的数据库模型的地方,但现在我知道这行不通,我需要一些建议。

当我有一个 event_id 和一个 user_id 时,我需要检查是否允许此领导者编辑此事件。如果他们被允许

  • user_id 和 event_id 是否在 user_event_role 表中?
  • 如果这个事件也有project_id,那么user_project_role 表中的用户是运行这个事件的项目吗?
  • 该用户是否在赞助该项目的组织的 user_organization_role 表中(检查 project_sponsor 表)?
  • 该用户是否在赞助此活动的组织的 user_organization_role 表中(检查 event_sponsor 表)?

如果在活动、项目或赞助活动或项目的组织的任何这些领导职位中找到此 user_id,则此用户/领导可以编辑。

我不确定如何编写如此复杂的查询。以下查询坚持 user_id 存在于所有三个 user_role 表中,而它只需要出现在一个表中。

SELECT count(*)
FROM user AS u
JOIN user_event_role AS uer ON (uer.user_id=u.id)
JOIN user_project_role AS upr ON (upr.user_id=uer.id)
JOIN user_organization_role AS uor ON (uor.user_id=upr.user_id)
JOIN event_sponsor AS es ON (es.organization_id=uor.organization_id)
JOIN project_sponsor AS ps ON (ps.project_id=upr.project_id)
WHERE
  uer.term_to >= CURRENT_DATE() AND
  upr.term_to >= CURRENT_DATE() AND …
Run Code Online (Sandbox Code Playgroud)

mysql query

5
推荐指数
1
解决办法
429
查看次数

标签 统计

mysql ×1

query ×1