我希望得到区域的名称,产品数量和产品面额以及最小库存订单的区域名称。
除了面额之外,我几乎得到了所有东西。
我的代码:
for $zone in distinct-values(/productos/produc/cod_zona)
let $numero := count(/productos/produc[cod_zona = $zone]/cod_prod)
let $nomzona:=/zonas/zona[cod_zona = $zone]/nombre
let $minimo :=min(/productos/produc[cod_zona = $zone]/stock_minimo)
let $deno :=/productos/produc[stock_minimo=$minimo]/denominacion
order by $nomzona ascending
return concat( 'Zona:', $nomzona,' ',
'Productes:', $numero,' ',
'Mínim stock:', $deno
结果:
Zona:Andalucía Productes:2 Mínim stock: //here must be print like that "Placa base "
Zona:Extremadura-Galicia Productes:3 Mínim stock:
Zona:Levante-Cataluña Productes:4 Mínim stock:
Zona:Madrid-CENTRO Productes:4 Mínim stock:
productos.xml:
<productos>
<TITULO>DATOS DE LA TABLA PRODUCTOS</TITULO>
<produc>
<cod_prod>1010</cod_prod>
<denominacion>Placa Base MSI G41M-P26</denominacion>
<precio>50</precio>
<stock_actual>10</stock_actual>
<stock_minimo>3</stock_minimo>
<cod_zona>10</cod_zona>
</produc>
<produc>
<cod_prod>1011</cod_prod>
<denominacion>Micro Intel Core i5-2320</denominacion>
<precio>120</precio>
<stock_actual>3</stock_actual>
<stock_minimo>5</stock_minimo>
<cod_zona>10</cod_zona>
</produc>
<produc>
<cod_prod>1012</cod_prod>
<denominacion>Micro Intel Core i5 2500</denominacion>
<precio>170</precio>
<stock_actual>5</stock_actual>
<stock_minimo>6</stock_minimo>
<cod_zona>20</cod_zona>
</produc>
<produc>
<cod_prod>1013</cod_prod>
<denominacion>HD Seagate Barracuda 250GB SATA</denominacion>
<precio>80</precio>
<stock_actual>10</stock_actual>
<stock_minimo>5</stock_minimo>
<cod_zona>20</cod_zona>
</produc>
<produc>
另一个xml: zonas.xml:
<zonas>
<TITULO>DATOS DE LA TABLA ZONAS</TITULO>
<zona>
<cod_zona>10</cod_zona>
<nombre>Madrid-CENTRO</nombre>
<director>Pedro Martín</director>
</zona>
<zona>
<cod_zona>20</cod_zona>
<nombre>Extremadura-Galicia</nombre>
<director>Alicia Pérez</director>
</zona>
<zona>
我做错了什么?
感谢/格拉西亚斯/的Merci
答案 0 :(得分:3)
您并未将$deno
限制在当前区域,因此对于produc
具有相同stock_minimo
的{{1}},这将返回序列而不是单个项目。所以你应该首先为zone添加另一个谓词:
let $deno := /productos/produc[cod_zona = $zone][stock_minimo=$minimo]/denominacion
但是,如果同一个区域中只有两个produc
具有相同的min(stock_minimo)
,那么您将遇到同样的问题,因此您可以使用{{1}在输出中对此进行规划而不是string-join
:
concat