工会经营者锻炼

时间:2013-03-18 01:35:28

标签: sql oracle11g

我的练习声明要编写一个查询,其中包含UNIONSELECTREGION_ID, REGION_NAME, COUNTRY_NAME个,其中包含union列和“No of Locations”。结果必须是包含该国家/地区数量的所有国家/地区的列表。该列表必须按地区ID和国家/地区名称排序。

我不太了解运营商(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

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

1 个答案:

答案 0 :(得分: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