相关疑难解决方法(0)

如何在SQL中简单有效地查询嵌套关系?

我正在寻找最简单,最有效的SQL查询来检索events与给定相关的所有内容user.


建立

这是我的架构的简单表示:

在此输入图像描述

有几点需要注意:

  • users属于teamsvia memberships.
  • teams可以有很多collections,apps和webhooks.
  • collections也可以有很多webhooks.
  • webhooks可以属于team或者collection,但只能属于一个.
  • events 可以属于任何对象,但只能属于一个对象.

这似乎是大多数SaaS类型公司所拥有的相当基本的设置(例如Slack或Stripe).一切都由团队"拥有",但用户属于团队并与界面交互.


问题

鉴于该设置,我想创建一个解决...的SQL查询...

查找与给定用户相关(直接或间接)的所有事件id.

我可以轻松编写直接或间接通过特定方式查找的查询.例如...

查找与用户直接相关的所有事件id.

SELECT *
FROM events
WHERE user_id = ${id}
Run Code Online (Sandbox Code Playgroud)

要么...

通过他们的团队查找与用户间接相关的所有事件.

SELECT events.*
FROM events
JOIN memberships ON memberships.team_id = events.team_id
WHERE memberships.user_id = ${id}
Run Code Online (Sandbox Code Playgroud)

甚至...

通过团队的任何集合查找与用户间接相关的所有事件.

SELECT events.*
FROM events …
Run Code Online (Sandbox Code Playgroud)

sql postgresql

7
推荐指数
2
解决办法
658
查看次数

标签 统计

postgresql ×1

sql ×1