Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
基于多个表的多个表的Postgres/SQL计数_Sql_Postgresql - Fatal编程技术网

基于多个表的多个表的Postgres/SQL计数

基于多个表的多个表的Postgres/SQL计数,sql,postgresql,Sql,Postgresql,我有4个表,目标是根据给定的User.uuid和Resource.uuid判断是否存在AccountLink或Resource链接的简单的真/假(或者更简单的计数) 最小工作示例 球门 基于不相关的User.uuid和Resource.uuid的正确/错误响应 模式 目前正在工作 提供id列表,而不是true/false,这可以在应用程序代码中处理,但查询本身效率也很低: 选择id 从“帐户链接” 其中user_id=(从“Users”中选择id,其中uuid=?) 和account_id=(

我有4个表,目标是根据给定的
User.uuid
Resource.uuid
判断是否存在
AccountLink
Resource链接
的简单的真/假(或者更简单的计数)

最小工作示例

球门 基于不相关的
User.uuid
Resource.uuid
的正确/错误响应

模式 目前正在工作 提供
id
列表,而不是true/false,这可以在应用程序代码中处理,但查询本身效率也很低:

选择id
从“帐户链接”
其中user_id=(从“Users”中选择id,其中uuid=?)
和account_id=(从“资源”中选择account_id,其中uuid=?)
协会
选择id
来自“资源链接”
其中user_id=(从“Users”中选择id,其中uuid=?)
和resource_id=(从“Resources”中选择id,其中uuid=?)

有没有办法根据用户的
uuid
一次性找到正确的
用户
资源
,然后使用这些
id
属性跨多个表计数?

Hmmm。我想您需要一个
交叉连接
,并引入附加信息:

选择
(存在(选择1)
来自“AccountLinks”al
其中al.user\u id=u.id,al.account\u id=r.account\u id
))就像你的accountlink一样,
(存在(选择1)
来自“资源链接”rl
其中rl.user_id=u.id,rl.resource_id=r.id
))就像你的资源链接一样
从“用户”到交叉连接
“资源”r
其中u.uuid=?而r.uuid=?

您提到了count和true/false,但您的查询返回了一个id列表。因此不确定您想要的结果是与
资源.uuid相关的
用户.uuid
?还是两个独立的输入?@JuanCarlosOropeza更新了我的问题,以澄清您错过了
上的左连接条件。另外,
resource.uuid
似乎也有一个输入变量。我将研究
交叉连接
。同时,
uuid
对于
User
Resource
是不同的。我更新了我的问题,以便更清楚地反映这一点。
User
- id
- uuid

Resource
- id
- account_id
- uuid

AccountLink
- id
- account_id
- user_id

ResourceLink
- id
- resource_id
- user_id