使用PL / SQL查找缺少的关系

地狱

我有3张桌子,一张Users桌子,一张Preferences桌子和一张User_Preferences桌子。他们看起来像这样:

Users 桌子:

  • User_ID:主键
  • User_Name:用户名
  • ...其他不重要的领域

Preferences 桌子:

  • Pref_ID:主键
  • Pref_Name:首选项名称
  • ...其他不重要的领域

User_Preferences 桌子:

  • Pref_ID:首选项所针对的用户
  • User_ID:正在设置的首选项
  • Pref_Val:首选项的值

多年以来,已经添加了许多新的首选项,但是现在基础体系结构已经有所变化。以前,如果该User_Preferences表不包含某个链接Preference,则无所谓,但是现在,每个表都Preference需要分配给every User

因此,鉴于已填充了这三个表,我可以运行哪些查询以User_Preferences显示缺失的列表

例如,如果有2个用户和2个权限,并且第一个用户同时拥有,但第二个用户拥有一个,它将为我提供该用户和该权限的一行

戈登·利诺夫(Gordon Linoff)

您可以使用cross join来生成所有组合,然后使用过滤掉存在的组合left join

select u.*, p.*
from users u cross join
     preferences p left join
     user_preferences up
     on up.user_id = u.user_id and up.preference_id = p.preference_id
where up.user_id is null;

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用外部联接的PL / SQL

来自分类Dev

PL/SQL 中的“被使用”查询?

来自分类Dev

如何在PL / SQL中使用序列查找父表?

来自分类Dev

使用PL / SQL删除SQL行

来自分类Dev

使用PL / SQL删除大量记录

来自分类Dev

在PL \ SQL块中使用EXECUTE IMMEDIATE

来自分类Dev

使用PL / SQL HTTP上传BLOB文件

来自分类Dev

使用PL SQL读取XML元素的出现

来自分类Dev

使用Pl / SQL函数进行光线投射

来自分类Dev

使用select语句存储的PL / sql函数

来自分类Dev

PL / SQL在LOOPING中使用获取数据

来自分类Dev

在pl / sql中使用双竖线

来自分类Dev

在PL / SQL中的With子句之后使用for循环

来自分类Dev

使用Oracle PL / SQL减去时间

来自分类Dev

使用PL / SQL进行单选按钮验证

来自分类Dev

如何使用PL / SQL遍历JSON响应?

来自分类Dev

pl sql也使用查询声明变量

来自分类Dev

使用PL / SQL的工资总支出

来自分类Dev

以最佳方式使用PL / SQL求和

来自分类Dev

在PL \ SQL块中使用EXECUTE IMMEDIATE

来自分类Dev

在pl / sql中使用子查询块

来自分类Dev

使用select语句存储的PL / sql函数

来自分类Dev

使用PL SQL读取XML元素的出现

来自分类Dev

在pl / sql中使用双竖线

来自分类Dev

使用Java代码执行PL / SQL过程

来自分类Dev

在PL / SQL中的With子句之后使用for循环

来自分类Dev

PL / SQL使用变量调用游标

来自分类Dev

PL / SQL:在“ WITH ... AS”子句外使用“ IF”语句

来自分类Dev

使用 Oracle 在 PL/SQL 上解释计划