相关表格是:
列车(列车代码,列车类型,出发站,目的地站)
列出从伦敦出发并开往KENT的列车详情。
这个问题非常简单,我到处寻找一个基本的答案,却找不到答案。
这是我到目前为止所提出的,但我不知道它是否正确,或者甚至可以在关系代数中使用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命令?我真的不知道,即使这是一个如此简单的问题。任何人都可以帮助我吗?
答案 0 :(得分:1)
我不熟悉Oracle SQL,但我熟悉MySQL,我相信基本语法是一样的。您对AND的使用看起来是正确的,但看起来您在查询中缺少FROM关键字。如果该表被称为TRAIN,请尝试:
SELECT * FROM TRAIN WHERE departure-station = 'LONDON' AND destination-station = 'KENT'
答案 1 :(得分:1)
“和”在关系代数中肯定是有效的,可以这样写:
σ departure-station = 'LONDON' AND destination-station = 'KENT' (TRAIN)
这是一个基础教程,但它定义了大多数RA概念:
答案 2 :(得分:1)
关系代数没有单一版本,即使我们忽略了π
vs PROJECT OVER
等琐碎的语法差异。他们甚至都不具备相同的 relation 概念。对于SELECT
/ RESTRICT
,给出了的定义是什么?我们无法告诉你,你必须告诉我们。
如果要使用的关系代数版本允许AND
中的任意嵌套条件,则SELECT
有效。原始的关系代数只允许单一的相等或不等式。你需要找出"关系代数" &安培; " SELECT
"你的任务意味着什么。但无论哪种方式,你都可以写:
SELECT (SELECT TRAIN WHERE departure-station = 'LONDON')
WHERE destination-station = 'KENT'
你的长篇文章毫无意义地设置了TABLE3
,没有使用它,然后再次设置它。此外,您的长格式无效,因为INTERSECT
需要与相同属性集的两个关系。但你是对的INTERSECT
平行于AND。 NATURAL JOIN
也是如此。每个表(给定或查询)都有一个谓词,即由属性参数化的语句模板,给出元组成员资格条件。例如TRAIN
是元组,其中(类似的)训练类型为 train-type 的列车代码从出发站到< EM>目的地站。 INTERSECT
&amp; NATURAL JOIN
返回一个关系中的元组 AND 在另一个关系中,即满足一个关系的谓词 AND ed with other&#39; s 。同样UNION
计算OR,MINUS
计算AND NOT,而WHERE
condition
计算... AND 条件。例如,SELECT
与AND
的元组是 train-type 类型的火车列车代码来自出发站到目的地站和出发站 =&#39;伦敦&#39; AND 目的地站 =&#39; KENT&#39;。 PROJECT
relation
OVER
attributes kept
计算FOR SOME(值)属性被删除,谓词。例如,TABLE4
是元组,其中FOR SOME 列车类型,出发站&amp; train-type 的目的地站,列车代码从出发站到目的地-station 和目的地站 =&#39; KENT&#39;。
另一个不使用AND
的答案是TABLE1 INTERSECT TABLE2
。你为什么要做其他所有事情? (例如,你进行了一些预测,然后将它们与原始图像一起加入;这总是给出了什么?)
请参阅this answer。