Xquery 人口数据查询
对于下面的XML数据,我试图获得这里显示的输出:即,我希望看到人口超过20000的国家的名称,条件是显示的城市数量应仅适用于人口超过3500的国家。此外,在某些国家,该市位于一个省之内Xquery 人口数据查询,xquery,Xquery,对于下面的XML数据,我试图获得这里显示的输出:即,我希望看到人口超过20000的国家的名称,条件是显示的城市数量应仅适用于人口超过3500的国家。此外,在某些国家,该市位于一个省之内 3. 2. ---------------------------这是XML数据---------------------- <country id="1" name="A" population="12000"> <name>A</name> <cit
3.
2.
---------------------------这是XML数据----------------------
<country id="1" name="A" population="12000">
<name>A</name>
<city id="c1" country="1">
<name>T1</name>
<population>5000</population>
</city>
<city id="c2" country="1">
<name>T2</name>
<population>3000</population>
</city>
<city id="c3" country="1">
<name>T3</name>
<population>4000</population>
</city>
</country>
<country id="3" name="B" population="80000">
<name>B</name>
<city id="c4" country="2">
<name>T4</name>
<population>6000</population>
</city>
<city id="c5" country="2">
<name>T5</name>
<population>2000</population>
</city>
<city id="c6" country="2">
<name>T6</name>
<population>60000</population>
</city>
<city id="c7" country="2">
<name>T7</name>
<population>12000</population>
</city>
</country>
<country id="3" name="C" population="68000">
<name>C</name>
<province>P1</province>
<city id="c8" country="3">
<name>T8</name>
<population>51000</population>
</city>
<city id="c9" country="3">
<name>T9</name>
<population>3000</population>
</city>
<city id="c10" country="3">
<name>T10</name>
<population>14000</population>
</city>
</country>
A.
T1
5000
T2
3000
T3
4000
B
T4
6000
T5
2000
T6
60000
T7
12000
C
P1
T8
51000
T9
3000
T10
14000
我写了这个xquery,但我不知道如何排除人口>3500的城市。我可能也没有正确地编写代码…请协助
for $c in doc("abc")//country
let $city:= count($c/city/name)
let $citypr:= count($c/province/city/name)
where $c/@population>1000000
return
<result>
<country name='{data($c/name) }'></country>
<num_of_cities>
{
if (exists ($c/city/name)) then
$city
else
$citypr
}
</num_of_cities>
</result>
用于单据中的$c(“abc”)//国家/地区
let$city:=计数($c/city/name)
let$citypr:=计数($c/省/市/名)
其中$c/@population>1000000
返回
{
如果(存在($c/城市/名称)),则
$city
其他的
$citypr
}
一些提示:
- 不要费心于
子句,在这些子句中,您可以在检索内容的说明符中更早地进行筛选where
- 如果只希望有一个
,而不是每个数据一个,则需要在FLWOR表达式之前启动它;无论您“返回”什么,每件物品都将返回一次
<result>{
for $large-country in doc("abc")//country[@population > 20000]
let $large-cities := $country/city[population > 3500]
return
<country name="{$large-country/@name}">
<num_cities>{count($large-cities)}</num_cities>
</country>
}</result>
{
对于$large country,以doc(“abc”)//国家[@population>20000]
let$大城市:=$国家/城市[人口>3500]
返回
{count($大城市)}
}
感谢您的回复,但我如何将省内有城市的国家也包括在内。我必须检查并显示,例如国家3的城市在一个省内。我想我得到了我想要的,非常感谢你的帮助。{对于文档中的$large country(“abc”)//国家[@population>20000]让$large cities:=$large country/city[人口>3500]让$large citiesp:=$large country/province/city[population>3500]返回{如果(存在($large country/city/name)),则计数($large citiesp)}
<result>{
for $large-country in doc("abc")//country[@population > 20000]
let $large-cities := $country/city[population > 3500]
return
<country name="{$large-country/@name}">
<num_cities>{count($large-cities)}</num_cities>
</country>
}</result>