如何在 SQL 和关系代数中无论列顺序如何只列出每对元组一次?

2023-12-13

我正在做一些书本练习,但找不到有关如何用关系代数表达以下内容的解释。我确实找到了一个不过 SQL 的答案但我感兴趣的是是否有其他方法可以解决这个问题。

书中的问题是:找到那些具有相同速度和 RAM 的 PC 型号对。一对只能列出一次;例如,列出 (i,j) 但不列出 (j,i)。

PC 的架构是:

PC (
    model INTEGER NOT NULL PRIMARY KEY,
    speed NUMERIC,
    ram INTEGER,
    hd INTEGER,
    price INTEGER);

和我提出的查询:

SELECT PC.model, PC1.model
FROM PC, PC AS PC1 
WHERE PC.model != PC1.model AND PC.speed = PC1.speed AND PC.ram = PC1.ram;

返回:

 model | model 
-------+-------
  1004 |  1012
  1012 |  1004

我构建的关系代数表达式是:

  1. 定义名为 PC1 的 PC 副本,并将属性“model”重命名为“model1”。
  2. 项目 PC 的型号、速度和内存以及 PC1 的型号 1、速度和内存。
  3. PC 和 PC1 的上述投影之间进行 Theta 连接,条件是 model != model1。
  4. (3) 中结果的项目模型和模型 1。

因此,在 SQL 查询和关系代数中,匹配结果都会列出两次,但顺序相反。如何使其无论顺序如何只列出一次?


只需使用以下事实:如果PC.model != PC1.model,那么一个比另一个小。因此,如果您需要其中一对,只需使用其中之一PC.model < PC1.model or PC.model > PC1.model(取决于您要保留哪一对)。

SELECT PC.model, PC1.model
FROM   PC, PC AS PC1 
WHERE  PC.model < PC1.model AND PC.speed = PC1.speed AND PC.ram = PC1.ram;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 SQL 和关系代数中无论列顺序如何只列出每对元组一次? 的相关文章

  • Linq lambda表达式多对多表选择

    我有三个表 其中两个是多对多关系 Picture 这是中间mm表中的数据 Edit 到这里 我得到正确的 4 行返回 但它们都是相同的结果 我知道我需要返回 4 行 但有不同的结果 return this mediaBugEntityDB
  • Postgres 上的 C 语言环境和 Posix 语言环境有什么区别?

    我知道 Postgres 上的数据库区域设置负责国家字符的正确顺序 正确的小写 大写等 但为什么有两种语言中立的语言环境 posix and c 它们之间有什么区别 还是只是一个中立的语言环境有两个不同的名称 UPDATE正如 Magnus
  • 删除或更改 ETL 中的记录

    我有一个表 我在上面构建了 ETL 服务 货物记录 到达 离开 进入表格 我已经这样做了 我的桌子将被删除 当项目标识符第二次到达数据库时 两条记录都被删除 label cost time x2 29 14 5 2020 01 00 00
  • 如何使用外连接和分组依据在查询中包含 NULL 值

    我有两个表 其中包含以下示例数据 Table 1 item name item id item desc 1 apple 2 orange 3 banana 4 grape 5 mango Table 2 user items user i
  • 金融 - 计算到期收益率

    我读了this https stackoverflow com questions 1173555 open source financial library specifically yield to maturity发布关于 net 库
  • sql查询中case语句中的布尔值

    我在选择查询中使用 case 语句 类似这样 Select col1 col2 isActive case when col3 abc then 1 else 0 end col4 from
  • 查询从同一表中的另一条记录获取值并按大于间隙阈值的差异进行过滤

    我将数据导入到 MS Access 中的临时表中 如下所示 我添加了需要使用 SQL 查询计算的 Gap 和 Previous Current 列 间隙阈值 是用户输入或范围提供给查询和例如是 300 GlobalID 对 ItemID 进
  • max()、分组依据和排序依据

    我有以下 SQL 语句 SELECT t client id max t points AS max FROM sessions GROUP BY t client id 它只是列出了客户 ID 以及他们所获得的最大积分 现在我想按 max
  • Oracle中如何选择前100行?

    我的要求是获取每个客户的最新订单 然后获取前100条记录 我编写了一个如下查询来获取每个客户的最新订单 内部查询工作正常 但我不知道如何根据结果获得前 100 名 SELECT FROM SELECT id client id ROW NU
  • 随机排列每行的列值

    我正在使用 C NET 开发多项选择题考试生成器 每次做出报告时 都会在数据库中随机挑选问题 并随机调整选项 我可以做随机问题部分 但我不能做选择的洗牌 我有一张表 其中一行如下 question answer distractor1 di
  • MySQL 查询中的窗口函数

    有没有办法在 SELECT 查询本身中动态地使用 MySQL 查询中的窗口函数 我知道在 PostgreSQL 中这是可能的 例如 下面是 PostgreSQL 中的等效查询 SELECT c server ip c client ip s
  • JbdcTemplate - 带有动态 SQL 查询的PreparedStatements

    I know jdbcTemplate可以用来创建PreparedStatements如果你这样设置 i e private JdbcTemplate jdbcTemplate String sqlQuery Select from tab
  • TSQL:无法对 COUNT(*) 执行聚合函数 AVG 来查找一天中最繁忙的时间

    考虑一个保存日志数据的 SQL Server 表 重要的部分是 CREATE TABLE dbo CustomerLog ID int IDENTITY 1 1 NOT NULL CustID int NOT NULL VisitDate
  • 法语和西班牙语的特殊字符可以保存在 varchar 中吗?

    法语和西班牙语中有普通英语中不使用的特殊字符 重音元音等 varchar 是否支持这些字符 或者我需要一个 nvarchar 吗 注 我愿意NOT希望讨论我是否应该使用 nvarchar 还是 varchar 您在谈论什么 SQL 实现 我
  • SQL Like 带有子查询

    我怎样才能做到这一点 SELECT FROM item WHERE item name LIKE SELECT equipment type FROM equipment type GROUP BY equipment type 内部子查询
  • 过滤项目来源

    通过此代码 我设置了数据网格的 ItemsSource 不过 我有更多的 wpf 控件来过滤数据网格 例如从时间范围过滤数据网格 我可以为此编写一个新查询 但这似乎没有必要 因为数据已经可用 我只需要过滤它 最好的方法是什么 我能得到的任何
  • SQL 查询结果为字符串(或变量)

    是否可以将SQL查询结果输出到一个字符串或变量中 我的php和mysql不好 假设我有数据库 agents 其中包含列 agent id agent fname agent lname agent dept 使用此查询 sql SELECT
  • 如何显示 RSpec 测试生成的 SQL 查询日志?

    我正在为我的 Rails 3 应用程序编写规范 我想测试数据库事务是否真的有效 如果能够看到我的应用程序在规范驱动下生成的 sql 查询 这将非常有帮助 有没有办法像在 Rails 控制台中一样查看查询 我正在使用 Rails 3 0 9
  • 选择两列中两个日期之间的记录

    如何选择两列中两个日期之间的记录 Select From MyTable Where 2009 09 25 is between ColumnDateFrom to ColumnDateTo 我有一个日期 2009 09 25 我喜欢选择
  • ActiveRecord 查询,按关联排序,最后一个 has_many

    我试图列出所有Users by the created at最近创建的关联记录 通讯 列 到目前为止我所拥有的 User includes communications order communications created at IS

随机推荐

  • sqlalchemy.exc.NoSuchModuleError:无法加载插件:sqlalchemy.dialects:bigquery

    尝试使用 sqlalchemy 创建 bigquery 连接器 from sqlalchemy import create engine engine create engine bigquery
  • Delphi 2010 对象检查器网格和 Windows dpi

    我在高分辨率宽屏上工作 并将 dpi 设置为 144 这样我可以更好地看到字体 Delphi 2010 对象检查网格中的问题我看不到属性或事件名称的文本 网格无法缩放 有什么解决办法吗 thank 读完你的文章后 我问 Uwe Schust
  • 通过字符串名称访问变量值(groovy)

    我做了一些研究 但还没有找到适合我的案例的工作代码 我有两个名为test and test2我想将它们放入以下格式的地图中 test valueof test test2 valueof test2 我的一段代码如下 def test HE
  • 如何将智能表“st-search”与 ng-model 集成?

    如何在Smart Table上设置不考虑用户输入的输入搜索值 这是我的代码 当用户单击复选框时 输入字段会自动输入 Sam 但表记录不会被过滤 并更新 这是我的代码 div class container table class table
  • Codeigniter:在非对象上调用成员函数 result_array()

    我正在使用 Codeigniter 构建 web 应用程序 但收到此错误 Fatal error Call to a member function result array on a non object in var www appli
  • 在其他下拉菜单中选择后禁用下拉选项

    我有 12 个下拉输入区域 一年中的每个月份都有 1 个 每个下拉菜单都有相同的 24 个选项 我需要这样做 例如 如果您在 一月 下拉框中选择了选项 4 则无法在任何其他下拉菜单中选择该选项 4 它仍然在下拉列表中 但只是被禁用 这将有一
  • ID 令牌中缺少 Azure AD v2.0 特定的可选声明

    我正在尝试使用 Microsoft Identity Web NuGet 添加可选声明 以在 NET Core 3 1 WebApp 中进行用户身份验证 阅读 MS 文档 似乎唯一需要的步骤是在 Azure 中的应用程序注册清单文件中声明可
  • 如何使用Data.Functor.Invariant?

    有人可以给我举个例子吗 invmap a gt b gt b gt a gt f a gt f b Invariant 有什么用呢 大多数情况下 人们don t use Invariant 您想要这样做的原因是 如果您正在使用其中变量同时出
  • iPhone利用进度条定时器实现流畅动画

    我试图本着学习的精神在iPhone上实现一个简单的测验应用程序 这个应用程序的一部分是一个计时器 我希望我的计时器从 10 倒数到 0 我有一个简单的 NSTimer 它每秒重复并调用一个方法 在这个方法中我更新了一个显示剩余时间的标签 效
  • 如何在Delphi中使用CCR.EXIF从JPG EXIF读取GPS坐标?

    使用 GPSLatitude 和 GPSLatitude 属性分配方法设置 GPS 坐标非常容易 但读取坐标却让我难住了 我试图访问 TGPSLongitude 类 但没有任何属性或方法可以为我呈现真实的 浮点的 甚至 DMS 的坐标 示例
  • 如何在没有单独的图标文件的情况下更改 Inno Setup 卸载程序快捷方式的图标?

    是否可以在不存储单独的图标文件 到应用程序文件夹 的情况下更改 开始 菜单中卸载程序快捷方式的图标 我看到这个 使用 Resource Hacker 在构建后更改图标 但我无法实现它 My code Icons Name group cm
  • 在 MacOS Big Sur 上安装 Netbeans 8.2 未找到 JDK

    我最近升级到 MacOS Big Sur 当尝试打开 NetBeans 8 2 时出现错误 缺少 JDK 并且需要运行某些 NetBeans 模块 请使用 JDK home命令行选项指定JDK安装 我尝试将 JAVA HOME 设置为 JD
  • Android - 触摸通知时提示对话框窗口

    我是 Android 应用程序开发新手 我正在为我的最后一年项目申请 我的应用程序将提醒用户预约 到目前为止 我设法在预约日期的通知栏上显示警报 我的主管要求添加一个功能 当用户在通知栏上单击选项卡时 将会出现一个对话框窗口并显示详细信息
  • ifelse 的意外结果

    我得到了意想不到的结果ifelse功能 vector lt factor c x x y z levels c x y z ifelse class vector factor yes levels vector no unique vec
  • 导航到 OnNavigedTo 的另一个页面?

    为什么该方法Navigate调用时不工作导航至该页面的事件 您可以重现这种行为吗 有什么想法如何避免这个问题 void LockScreenPage OnNavigatedTo Windows UI Xaml Navigation Navi
  • 如何将 div 覆盖在框架集上?

    我需要使用 jQuery 1 6 2 为现有 jsp 页面创建一个请等待页面 我能够使 div 覆盖正常工作 并在页面中心的模式窗口中显示 请稍候 动画 然而 覆盖层仅覆盖其中一个框架集 即中心框架集 html 结构基本上是 为了清楚起见
  • 关闭 AngularJS 中的 URL 操作

    我正在尝试使用 Angular 编写我的第一个网络应用程序 在正常模式下 html5模式关闭 Angular 强制地址的哈希部分看起来像 路径 添加前导 并对特殊字符进行编码 例如 它允许单个 和 在哈希中 并用 3F 和 23 替换其他
  • 如何从Python列表中删除所有重复元素?

    我有一个这样的清单 1 2 3 4 3 5 3 6 7 8 我想从列表中完全删除重复元素 此处 3 如下所示 1 2 4 5 6 7 8 如何在 python 中实现这一点 以便不仅删除第一次出现的重复元素 而且删除所有重复值 您可以使用C
  • 使用 Data studio 修剪 BigQuery 分区

    我对这个问题有一个几乎相同的场景 如何选择BigQuery表中最新的分区 还有一个额外的并发症 我需要在 Data Studio 中显示结果 设置 我有一系列以不同时间间隔出现的数据集 我需要获取最新的分区 因为它们之间的时间段不一致 所以
  • 如何在 SQL 和关系代数中无论列顺序如何只列出每对元组一次?

    我正在做一些书本练习 但找不到有关如何用关系代数表达以下内容的解释 我确实找到了一个不过 SQL 的答案但我感兴趣的是是否有其他方法可以解决这个问题 书中的问题是 找到那些具有相同速度和 RAM 的 PC 型号对 一对只能列出一次 例如 列