【发布时间】:2019-09-16 23:58:21
【问题描述】:
我有以下关系代数任务,我需要将其转换为 SQL 查询,与 Microsoft SQL Server 兼容:
相关表格如下:
Raw_Materials_t:material_ID,material_description,
Supplies_t:Vendor_ID、Material_ID、Unit_Price
Vendor_t:Vendor_ID、Vendor_Name
SELECT DISTINCT V.Vendor_ID
FROM Raw_Materials_t R, Supplies_t S, Vendor_t V
WHERE R.Material_description = 'walnut'
AND S.Unit_price < 14
AND R.Unit_price < 14
AND V.Vendor_ID = S.Vendor_ID
有人告诉我,我的查询确实产生了正确的结果,但它没有明确使用有序的关系代数步骤。所以我需要做的是:
- (自然?)在 Supplies_t 上加入 Raw_Materials_t,仅选择 material_description 为 walnut 且 unit_price 低于 $14 的行
- 获取这些结果,仅投影 Vendor_ID 列(丢弃其他列)
- 在 Vendor_t 上加入此专栏
- 仅投影上述结果中的 Vendor_Name 列。
这是嵌套子查询还是相关子查询?我对这两个都不熟悉,也不知道如何进行。
【问题讨论】:
-
您的最后两个问题听起来像是您想在 RA 中获得一些答案。但是您的开场白说“转换为 SQL 查询”。你给出一个 SQL 查询。所以我不明白你还想要什么。 “相关子查询”是一个仅适用于 SQL 的术语,并且在您提供的 SQL 中没有。 RA 是一个代数,这意味着 RA 查询通常具有嵌套的运算符调用。因为它是一个代数,所以通常不会谈论“嵌套子查询”,而不是谈论“嵌套算术表达式”。同样,“嵌套子查询”更像是 SQL 中的一个术语。
标签: sql sql-server correlated-subquery relational-algebra