4.2.2.6 - Exemple de consulta "elaborada"
Partint d’aquest XML d’exemple que representa comandes de llibres (guardeu-lo com un document anomenat comanda_llibres.xml):
Es vol respondre la pregunta següent: de quins autors s’han demanat tres o més llibres?
Anem a fer l'exercici a poc a poc, de manera constructiva.
Per respondre aquesta pregunta el primer que cal és separar el document en blocs d’autor i processar-ne cada un de manera diferent. Per tant, es defineix un bucle amb un for per cada autor i s’escriu el nom per pantalla
El resultat serà una llista de tots els autors:
Es vol definir una restricció amb la quantitat de llibres que s’han demanat de cada autor; per tant, ho podríem intentar fer amb el where
Aquesta és la llista dels autors que tenen alguna petició de 3 o més llibres
Però es pot veure que encara no és el demanat, ja que no apareix l’autor Corsaro Levy, del qual s’han demanat dues unitats llibres diferents. Per tant, agrupem les quantitats per obtenir el resultat correcte
Ara el resultat sí que és el correcte:
Podem fer que el resultat siga més “bonic” mostrant les quantitats venudes al costat de cada autor i ordenant de més a menys els resultats.
Es pot veure que per no haver d’escriure diverses vegades l’expressió de suma s’ha definit una variable $suma i d’aquesta manera l’expressió ha quedat més fàcil d’escriure
La funció concat() ha eliminat les etiquetes XML i ha generat un resultat de text. Si es vol mantenir una estructura XML es pot crear manualment amb l’ajuda de les expressions avaluables:
Que generarà:
Llicenciat sota la Llicència Creative Commons Reconeixement SenseObraDerivada 4.0