0

我的练习要求编写一个包含UNION两个SELECTs 的查询,其中包含列REGION_ID, REGION_NAME, COUNTRY_NAME和“位置编号”。结果必须是所有国家/地区的列表以及该国家/地区的位置数量。该列表必须按地区 ID 和国家/地区名称排序。

我不太明白 operator 的逻辑union,这个查询的结果必须有所有国家的列表以及该国的位置数。我所做的是:

(select reg.region_id, reg.region_name, coun.country_name
from countries coun, regions reg
where reg.region_id=coun.region_id
order by region_id, country_name)
UNION
(select ...);

我不确定接下来会发生什么。我不确定我写的参数是否正确。我想知道如何在union这里使用运算符。顺便说一句,我正在使用 hr 表模式。

4

1 回答 1

0

我认为您教授想要的是在同一列中列出的国家名称和地区名称。在这种情况下,使用 UNION 很有意义。结果查询将类似于:

(select region_id, 0, region_name
from regions)
UNION
(select reg.region_id, coun.contry_id, coun.country_name
from countries coun, regions reg
where reg.region_id=coun.region_id)
order by 1, 2

在上面的查询中,我假设您有一个名为 country_id 的列(它有利于排序,因此首先是区域 #1,然后是属于该区域的所有国家,然后是区域 #2 及其国家,等等)如果您没有 country_id,您可以使用以下查询实现相同的排序:

(select region_id, 0, region_name
from regions)
UNION
(select reg.region_id, 1, coun.country_name
from countries coun, regions reg
where reg.region_id=coun.region_id)
order by 1, 2, 3
于 2013-03-18T04:42:25.453 回答