【发布时间】:2012-03-14 02:13:04
【问题描述】:
这是一个数据库类,使用 Oracle DB 11g
Tables:
• Flight (flt_no, from_city, to_city, flt_distance,
flt_departs, flt_arrives, flt_price)
• Aircraft (craft_id, craft_name, cruising_range)
• Employee (emp_id, emp_name, emp_salary)
• Certified (emp_id, craft_id)
查询:一位客户希望从麦迪逊到纽约旅行,换班次数不超过两次。如果客户希望在下午 6 点之前到达纽约,请列出从麦迪逊出发的选择。
感谢任何帮助。我真的不知道从哪里开始。
编辑 到目前为止,这是我想出的。请让我知道我是否走在正确的轨道上。
SELECT F.flt_no
FROM Flight F
WHERE F.from_city = 'Madison'
AND F.to_city = 'New York'
AND DATEPART(hh, F.flt_arrives) <= 18
UNION
SELECT F.flt_no
FROM Flight F
WHERE (F.from_city = 'Madison'
AND F.to_city IN (SELECT from_city
FROM Flight F
WHERE F.to_city = 'New York')
)
OR
(F.to_city = 'New York'
AND F.from_city IN (SELECT to_city
FROM Flight F
WHERE F.from_city = 'Madison')
AND DATEPART(hh, F.flt_arrives) <= 18
)
【问题讨论】:
-
"我有一个不寻常的查询请求。" 不,没有什么不寻常的。您的表结构看起来有些不稳定。我无法猜测,因为这取决于您的要求。
-
嗯,根据我的习惯,这很不寻常。表格结构是作业中所需的设计,所以我无法更改。你的意思是什么要求?我只需要编写将返回我指定的结果的任何查询。
-
DATEPART 不是 Oracle 语法(除了在 EssBase 中,这不算数)
-
@APC 或任何人,你能告诉我如何单独查询小时字段。这就是你在谷歌上寻找答案时得到的结果。我已经阅读了我的教科书一千遍,关于这个问题没有任何帮助。这就是我在这里问的原因。有人请帮我一把。
-
@bOkeifus,问题是您正在阅读您的教科书,而不是尝试很多次来弄清楚您的查询做了什么,出了什么问题以及如何改进它。您可以通过查看 this site 来解决您的日期选项。