我的练习声明要编写一个查询,其中包含UNION
个SELECT
个REGION_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表架构。
答案 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