Hola a todos, hoy os voy a explicar como podemos ordenar en XQuery.
En XQuery, podemos ordenar los datos de nuestra consulta con order by.
Veamos un pequeño ejemplo con nuestro xml de bailes:
<?xml version="1.0" encoding="UTF-8"?> <bailes xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="BDbaile.xsd"> <baile id="1"> <nombre>Tango </nombre> <precio cuota="mensual" moneda="euro">27</precio> <plazas>20</plazas> <comienzo>1/01/2012</comienzo> <fin>1/12/2012</fin> <profesor>Roberto Garcia</profesor> <sala>1</sala> </baile> <baile id="2"> <nombre>Cha-cha-cha </nombre> <precio cuota="trimestral" moneda="euro">80</precio> <plazas>18</plazas> <comienzo>1/07/2012</comienzo> <fin>1/10/2012</fin> <profesor>Miriam Gutiérreza</profesor> <sala>1</sala> </baile> <baile id="3"> <nombre>Rock </nombre> <precio cuota="mensual" moneda="euro">30</precio> <plazas>15</plazas> <comienzo>1/01/2012</comienzo> <fin>1/12/2012</fin> <profesor>Laura Mendiola</profesor> <sala>1</sala> </baile> <baile id="4"> <nombre>Merengue </nombre> <precio cuota="trimestral" moneda="dolares">75</precio> <plazas>12</plazas> <comienzo>1/01/2012</comienzo> <fin>1/12/2012</fin> <profesor>Jesús Lozano</profesor> <sala>2</sala> </baile> <baile id="5"> <nombre>Salsa </nombre> <precio cuota="mensual" moneda="dolares">32</precio> <plazas>10</plazas> <comienzo>1/01/2012</comienzo> <fin>1/12/2012</fin> <profesor>Jesús Lozano</profesor> <sala>2</sala> </baile> <baile id="6"> <nombre>Pasodoble </nombre> <precio cuota="anual" moneda="euro">3200</precio> <plazas>8</plazas> <comienzo>1/01/2012</comienzo> <fin>1/12/2012</fin> <profesor>Miriam Gutierrez</profesor> <sala>2</sala> </baile> </bailes>
Si queremos ordenar los bailes por nombre, lo haríamos así:
for $baile in doc("bailes.xml")//baile order by $baile/nombre return $baile
Este es el resultado:
Por defecto, se ordena de forma ascendente. si queremos ordenar de forma descendente:
for $baile in doc("bailes.xml")//baile order by $baile/nombre descending return $baile
Este es el resultado:
De todas formas, si ponemos ascending ordenaría de forma ascendente.
También podemos ordenar por mas de un campo, en caso de empate, se ordenará por el segundo campo.
for $baile in doc("bailes.xml")//baile order by $baile/plazas, $baile/nombre return $baile
Espero que os sea de ayuda. Si tenéis dudas, preguntad. Estamos para ayudarte.
Deja una respuesta