Ayuda Xquery
Publicado por Alberto (1 intervención) el 22/05/2020 01:14:57
Buenas necesito ayuda con Xquery y no se a quien recurrir. Les comento que tengo el siguiente archivo xml
Pues bien hay un ejercicio que no consigo sacar adelante. Lo que pide la consulta es obtener el nombre de los productos y el número de veces que ha sido comprado cada uno de ellos. Segun mi profesor necesito utilizar una cláusula where y una cláusula order by. Les dejo el código de la consulta que estoy utilizando por si hay algo que esté haciendo mal.
Gracias de antemano
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
<?xml version="1.0" encoding="UTF-8"?>
<tienda>
<productos>
<producto codigo="P0002">
<nombre>Windows 8</nombre>
<precio unidad="Euros">120</precio>
</producto>
<producto codigo="P0008">
<nombre>Pendrive 32GB</nombre>
<precio unidad="Euros">16</precio>
</producto>
<producto codigo="P0004">
<nombre>Portatil ASUS</nombre>
<precio unidad="Euros">400</precio>
</producto>
<producto codigo="P1600">
<nombre>Raton para portatil</nombre>
<precio unidad="Euros">10</precio>
</producto>
<producto codigo="P3000">
<nombre>Microsoft Office 2013</nombre>
<precio unidad="Euros">119</precio>
</producto>
<producto codigo="P5000">
<nombre>Disco Duro 1 TB</nombre>
<precio unidad="Euros">78</precio>
</producto>
</productos>
<clientes>
<cliente codigo="U300111">
<nombrecompleto>Manuel Moreno</nombrecompleto>
<direccion>
<calle tipovia="Calle">Alameda</calle>
<numero>23</numero>
<municipio>Sevilla</municipio>
</direccion>
<telefono>607234125</telefono>
</cliente>
<cliente codigo="U120711">
<nombrecompleto>Nieves Prieto</nombrecompleto>
<direccion>
<calle tipovia="Calle">Reino de Valencia</calle>
<numero>3</numero>
<municipio>Benidorm</municipio>
</direccion>
<telefono>608822173</telefono>
</cliente>
<cliente codigo="U030512">
<nombrecompleto>Marina Sanchez</nombrecompleto>
<direccion>
<calle tipovia="Avenida">Severo Ochoa</calle>
<numero>16</numero>
<municipio>Granada</municipio>
</direccion>
<telefono>666588045</telefono>
</cliente>
</clientes>
<compras>
<cantidad producto="P0004" cliente="U300111" fechacompra="12/01/2012">5</cantidad>
<cantidad producto="P0002" cliente="U300111" fechacompra="25/12/2011">3</cantidad>
<cantidad producto="P0004" cliente="U120711" fechacompra="05/07/2011">7</cantidad>
<cantidad producto="P1600" cliente="U300111" fechacompra="03/11/2011">2</cantidad>
<cantidad producto="P0004" cliente="U030512" fechacompra="30/04/2012">1</cantidad>
<cantidad producto="P0008" cliente="U120711" fechacompra="20/04/2012">3</cantidad>
</compras>
</tienda>
Pues bien hay un ejercicio que no consigo sacar adelante. Lo que pide la consulta es obtener el nombre de los productos y el número de veces que ha sido comprado cada uno de ellos. Segun mi profesor necesito utilizar una cláusula where y una cláusula order by. Les dejo el código de la consulta que estoy utilizando por si hay algo que esté haciendo mal.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
for $a in doc ('tienda.xml')/tienda
let $idproducto := $a/productos/producto/@codigo
let $idcliente := $a/clientes/cliente/@codigo
where $a/compras/cantidad/@producto
= $idproducto
and $a/compras/cantidad/@cliente
= $idcliente
order by $a/compras/cantidad/@producto
return
<productos>
<nombre>{$a/productos/producto/nombre}</nombre>
<numero_veces>{count($a/compras/cantidad)}</numero_veces>
</productos>
Gracias de antemano
Valora esta pregunta


0