最先答对且答案未经编辑的puber将获得纪念章一枚(答案不可编辑但可发新贴补充或纠正),其他会员如果提供有价值的分析、讨论也可获得纪念章一枚。
每两周的优胜者可获得itpub奖励的技术图书一本。
以往旧题索引:
http://www.itpub.net/forum.php?m ... eid&typeid=1808
原始出处:
http://www.plsqlchallenge.com/
作者:Kim Berg Hansen
运行环境:SQLPLUS, SERVEROUTPUT已打开
注:本题给出答案时候要求给予简要说明才能得到奖品
我有一张国家表,还有一张地点表:
create table qz_countries (
ctry_id integer primary key
, ctry_name varchar2(10)
, ctry_region varchar2(4)
);
create table qz_locations (
loc_idinteger primary key
, loc_namevarchar2(10)
, loc_typevarchar2(10)
, ctry_id references qz_countries
);
insert into qz_countries values ( 1, 'Canada' , 'AMER');
insert into qz_countries values (45, 'Denmark', 'EMEA');
insert into qz_countries values (49, 'Germany', 'EMEA');
insert into qz_locations values (1, 'Quebec' , 'Province',1);
insert into qz_locations values (2, 'Toronto', 'Town',1);
insert into qz_locations values (3, 'Jylland', 'Area', 45);
insert into qz_locations values (4, 'Odense' , 'Town', 45);
insert into qz_locations values (5, 'Bayern' , 'State' , 49);
insert into qz_locations values (6, 'Hamburg', 'Town', 49);
commit;
我想要一个类型为'Town'的地点列表,其所在国家处于'EMEA'地区。这个列表必须显示国家名称和地点名称。
哪些选项包含的查询会给我这个所需的输出:
CTRY_NAMELOC_NAME
---------- ----------
DenmarkOdense
GermanyHamburg
(A)
select c.ctry_name, l.loc_name
from qz_countries c, qz_locations l
where c.ctry_region = 'EMEA'
and l.loc_type = 'Town'
and l.ctry_id = c.ctry_id
order by c.ctry_name, l.loc_name;
(B)
select c.ctry_name, l.loc_name
from qz_countries c, qz_locations l
where c.ctry_region = 'EMEA'
and l.loc_type = 'Town'
order by c.ctry_name, l.loc_name;
(C)
select c.ctry_name, l.loc_name
from qz_countries c
join qz_locations l
on l.ctry_id = c.ctry_id
where c.ctry_region = 'EMEA'
and l.loc_type = 'Town'
order by c.ctry_name, l.loc_name;
(D)
select c.ctry_name, l.loc_name
from qz_countries c
join qz_locations l
on l.loc_type = 'Town'
where c.ctry_region = 'EMEA'
order by c.ctry_name, l.loc_name;
(E)
select c.ctry_name, l.loc_name
from qz_countries c
natural join qz_locations l
where c.ctry_region = 'EMEA'
and l.loc_type = 'Town'
order by c.ctry_name, l.loc_name;
(F)
select c.ctry_name, l.loc_name
from qz_countries c
where c.ctry_region = 'EMEA'
join qz_locations l
where l.loc_type = 'Town'
order by c.ctry_name, l.loc_name;
|