关系代数怎么可以让我SELECT两个条件?
Relational Algebra how can I SELECT two conditions?
相关的table是:
火车(火车代码,火车类型,出发站,目的地站)
列出从伦敦出发前往肯特的列车详情。
问题很简单,我到处找基本答案,但找不到。
这是我到目前为止的想法,但我不知道它是否正确,或者 AND 是否可以用于关系代数:
SELECT TRAIN WHERE departure-station = 'LONDON' AND destination-station = 'KENT'
对吗?我在网上找不到任何关于您是否可以为此使用 AND 的信息。如果这不起作用,我想我的回答应该是这样的:
SELECT TRAIN WHERE departure-station = 'LONDON' GIVING TABLE1
SELECT TRAIN WHERE destination-station = 'KENT' GIVING TABLE2
PROJECT TABLE1 OVER train-code GIVING TABLE3
PROJECT TABLE2 OVER train-code GIVING TABLE4
TABLE1 INTERSECT TABLE2 GIVING TABLE3
PROJECT TABLE3 OVER train-code, train-type, departure-station, destination-station GIVING RESULT
这对我来说似乎太长了,而且可能不正确。也许我需要改用 JOIN 命令?我真的不知道,尽管这是一个如此简单的问题。谁能帮帮我?
我不熟悉 Oracle SQL 但我熟悉 MySQL 并且我相信基本语法是相同的。您对 AND 的使用看起来是正确的,但看起来您在查询中缺少 FROM 关键字。如果 table 被称为 TRAIN 尝试做:
SELECT * FROM TRAIN WHERE departure-station = 'LONDON' AND destination-station = 'KENT'
"And"在关系代数中当然有效,可以这样写:
σ departure-station = 'LONDON' AND destination-station = 'KENT' (TRAIN)
这是一个基础教程,但它定义了大部分 RA 概念:
关系代数没有单一版本,即使我们忽略了 π
与 PROJECT OVER
等琐碎的语法差异。他们甚至对 关系 的概念都不相同。 你得到的对SELECT
/RESTRICT
的定义是什么?我们不能告诉你,你必须告诉我们。
如果要使用的关系代数版本允许 SELECT
中的任意嵌套条件,则您的 AND
有效。最初的关系代数只允许一个相等或不等式。您需要找出 "relational algebra" & "SELECT
" 对您的作业意味着什么。但无论哪种方式你都可以写:
SELECT (SELECT TRAIN WHERE departure-station = 'LONDON')
WHERE destination-station = 'KENT'
您的长格式毫无意义地设置了 TABLE3
,没有使用它,然后再次设置它。此外,您的长格式无效,因为 INTERSECT
需要两个具有相同属性集的关系。但是你是对的,INTERSECT
平行于 AND。 NATURAL JOIN
也是如此。每个table(给定或查询)都有一个谓词,即由属性参数化的语句模板,给出元组成员资格条件。例如 TRAIN
是元组,其中(类似于)训练 train-code 类型 train-type 来自 departure-station 到 destination-station。 INTERSECT
& NATURAL JOIN
return 在一个关系中的元组 AND 在另一个关系中,即满足一个关系的谓词 AND和其他人一起。同样,UNION
计算 OR,MINUS
计算 AND NOT,... WHERE
condition
计算 ... AND 条件。例如,你的 SELECT
和 AND
是元组,其中 train-code 类型 train-type 去从 departure-station 到 destination-station 和 departure-station = 'LONDON' 和 destination-station = 'KENT'。 PROJECT
relation
OVER
attributes kept
计算 FOR SOME(值)属性下降,谓词。例如 TABLE4
是元组,其中 FOR SOME train-type, departure-station & destination-station、train-code 类型 train-type 来自 departure-station 到 destination-station 和 destination-station = 'KENT'.
所以另一个不使用 AND
的答案是 TABLE1 INTERSECT TABLE2
。你为什么要做所有其他的事情? (例如,您进行了一些投影,然后将它们与原始投影相结合;这总能给出什么?)
参见 this answer。
相关的table是:
火车(火车代码,火车类型,出发站,目的地站)
列出从伦敦出发前往肯特的列车详情。
问题很简单,我到处找基本答案,但找不到。
这是我到目前为止的想法,但我不知道它是否正确,或者 AND 是否可以用于关系代数:
SELECT TRAIN WHERE departure-station = 'LONDON' AND destination-station = 'KENT'
对吗?我在网上找不到任何关于您是否可以为此使用 AND 的信息。如果这不起作用,我想我的回答应该是这样的:
SELECT TRAIN WHERE departure-station = 'LONDON' GIVING TABLE1
SELECT TRAIN WHERE destination-station = 'KENT' GIVING TABLE2
PROJECT TABLE1 OVER train-code GIVING TABLE3
PROJECT TABLE2 OVER train-code GIVING TABLE4
TABLE1 INTERSECT TABLE2 GIVING TABLE3
PROJECT TABLE3 OVER train-code, train-type, departure-station, destination-station GIVING RESULT
这对我来说似乎太长了,而且可能不正确。也许我需要改用 JOIN 命令?我真的不知道,尽管这是一个如此简单的问题。谁能帮帮我?
我不熟悉 Oracle SQL 但我熟悉 MySQL 并且我相信基本语法是相同的。您对 AND 的使用看起来是正确的,但看起来您在查询中缺少 FROM 关键字。如果 table 被称为 TRAIN 尝试做:
SELECT * FROM TRAIN WHERE departure-station = 'LONDON' AND destination-station = 'KENT'
"And"在关系代数中当然有效,可以这样写:
σ departure-station = 'LONDON' AND destination-station = 'KENT' (TRAIN)
这是一个基础教程,但它定义了大部分 RA 概念:
关系代数没有单一版本,即使我们忽略了 π
与 PROJECT OVER
等琐碎的语法差异。他们甚至对 关系 的概念都不相同。 你得到的对SELECT
/RESTRICT
的定义是什么?我们不能告诉你,你必须告诉我们。
如果要使用的关系代数版本允许 SELECT
中的任意嵌套条件,则您的 AND
有效。最初的关系代数只允许一个相等或不等式。您需要找出 "relational algebra" & "SELECT
" 对您的作业意味着什么。但无论哪种方式你都可以写:
SELECT (SELECT TRAIN WHERE departure-station = 'LONDON')
WHERE destination-station = 'KENT'
您的长格式毫无意义地设置了 TABLE3
,没有使用它,然后再次设置它。此外,您的长格式无效,因为 INTERSECT
需要两个具有相同属性集的关系。但是你是对的,INTERSECT
平行于 AND。 NATURAL JOIN
也是如此。每个table(给定或查询)都有一个谓词,即由属性参数化的语句模板,给出元组成员资格条件。例如 TRAIN
是元组,其中(类似于)训练 train-code 类型 train-type 来自 departure-station 到 destination-station。 INTERSECT
& NATURAL JOIN
return 在一个关系中的元组 AND 在另一个关系中,即满足一个关系的谓词 AND和其他人一起。同样,UNION
计算 OR,MINUS
计算 AND NOT,... WHERE
condition
计算 ... AND 条件。例如,你的 SELECT
和 AND
是元组,其中 train-code 类型 train-type 去从 departure-station 到 destination-station 和 departure-station = 'LONDON' 和 destination-station = 'KENT'。 PROJECT
relation
OVER
attributes kept
计算 FOR SOME(值)属性下降,谓词。例如 TABLE4
是元组,其中 FOR SOME train-type, departure-station & destination-station、train-code 类型 train-type 来自 departure-station 到 destination-station 和 destination-station = 'KENT'.
所以另一个不使用 AND
的答案是 TABLE1 INTERSECT TABLE2
。你为什么要做所有其他的事情? (例如,您进行了一些投影,然后将它们与原始投影相结合;这总能给出什么?)
参见 this answer。