Sql 需要为以下内容创建一个视图
这里有三张桌子Sql 需要为以下内容创建一个视图,sql,database,join,view,cockroachdb,Sql,Database,Join,View,Cockroachdb,这里有三张桌子 Table users { id uuid [pk, default: `gen_random_uuid()`] auth_id uuid [ref: - auths.id] org_id uuid [ref: - orgs.id] access_group text [default: 'DEFAULT'] created_at int [default: `now()::int`] updated_at int age int status t
Table users {
id uuid [pk, default: `gen_random_uuid()`]
auth_id uuid [ref: - auths.id]
org_id uuid [ref: - orgs.id]
access_group text [default: 'DEFAULT']
created_at int [default: `now()::int`]
updated_at int
age int
status text
}
Table op_user_access_groups {
op_id uuid [pk, ref: > ops.id]
access_group text [pk, default: 'DEFAULT']
}
Table op_users {
op_id uuid [pk, ref: > ops.id]
user_id uuid [pk, ref: > users.id]
access boolean [default: false]
}
users
包含用户信息,并且他/她属于某个组织(组织id)op\u user\u access\u groups
包含关于操作员有权访问所有访问组的信息。op\u id
属于org\u id
op_users
包含用户(用户id)的相关信息,无论用户属于哪个组,op_id
都可以访问这些信息select * from <that view> where op_id = ?
select*其中op_id=?
我应该找到操作员可以访问的用户
非常感谢您的帮助:)您应该使用
JOIN
查询来创建这样的视图。大概是这样的:
CREATE VIEW v AS
SELECT * FROM users
JOIN op_users ON users.id=op_users.op_id
JOIN op_user_access_groups ON op_user_access_groups.access_group=users.access_group
WHERE op_users.access = true
从您的问题来看,您的数据模型是如何工作的还不清楚,但是使用JOIN
创建一个视图来回答您的问题才是正确的答案