SQL> -- Tabla ANIMALES_TAB SQL> SQL> -- Seleccionar las incidencias de los animales macho junto con su id, nombre y sexo SQL> -- El resultado se mostrará ordenado por el identificador del animal SQL> SQL> SELECT a.animal_id as id, a.nombre as nombre, a.sexo as sexo, a.descripcion.extract('/animal/incidencias') as incidencias 2 FROM animales_tab a 3 WHERE a.sexo = 'macho' 4 ORDER BY a.animal_id; ID NOMBRE --------------- -------------------------------------------------- SEXO --------------- INCIDENCIAS -------------------------------------------------------------------------------- ani01 Perico macho Se m ani04 Pancho ID NOMBRE --------------- -------------------------------------------------- SEXO --------------- INCIDENCIAS -------------------------------------------------------------------------------- macho A ani06 Pepe macho ID NOMBRE --------------- -------------------------------------------------- SEXO --------------- INCIDENCIAS -------------------------------------------------------------------------------- SQL> SQL> -- Seleccionar el contenido textual de las incidencias graves de los animales del zoo junto con el nombre y el id del animal SQL> -- El resultado se mostrará ordenado por el identificador del animal SQL> SQL> SELECT a.animal_id as id, a.nombre as nombre, a.descripcion.extract('/animal/incidencias/incidencia[@gravedad="grave"]/text()') as incidencias 2 FROM animales_tab a 3 ORDER BY a.animal_id; ID NOMBRE --------------- -------------------------------------------------- INCIDENCIAS -------------------------------------------------------------------------------- ani01 Perico Se mostró agresivo y nervioso ante la presencia de un grupo de niños ani02 Rosita ani03 Turuleta ID NOMBRE --------------- -------------------------------------------------- INCIDENCIAS -------------------------------------------------------------------------------- Se mostró decaído y reacio a comer. Parece padecer un cuadro de extrés ani04 Pancho ani05 Manchita ID NOMBRE --------------- -------------------------------------------------- INCIDENCIAS -------------------------------------------------------------------------------- ani06 Pepe ani07 Pepa ani08 Moby Dick ID NOMBRE --------------- -------------------------------------------------- INCIDENCIAS -------------------------------------------------------------------------------- Tras su llegada al zoo parece presentar problemas para adaptarse al su hab 8 filas seleccionadas. SQL> SQL> SQL> -- Tabla ESPECIES_TAB SQL> SQL> -- Seleccionar el primer párrafo de las descripción de cada una de las distintas especies junto con su identificador SQL> -- El resultado se mostrará ordenado por el identificador de la especie SQL> SQL> SELECT e.especie_id as id, e.descEspecie.extract('/especie/descripcion/parrafo[1]') as parrafo 2 FROM especies_tab e 3 ORDER BY e.especie_id; ID --------------- PARRAFO -------------------------------------------------------------------------------- esp00 Actualmente es una especie amenazada y en serio peligro, esp01 Cresta (carúncula) roja y dentada, caìda a un lado ; pi esp02 ID --------------- PARRAFO -------------------------------------------------------------------------------- Es un carnìvoro, de color blanco y negro esp03 Es un perico pequeño con la parte superior del cuerpo ve esp04 ID --------------- PARRAFO -------------------------------------------------------------------------------- La ballena azul o rorcual azul gigante es el animal más SQL> SQL> -- Otra forma de formular la consulta anterior, aprovechando el atributo num del párrafo seria SQL> SQL> SELECT e.especie_id as id, e.descEspecie.extract('/especie/descripcion/parrafo[@num="01"]') as parrafo 2 FROM especies_tab e 3 ORDER BY e.especie_id; ID --------------- PARRAFO -------------------------------------------------------------------------------- esp00 Actualmente es una especie amenazada y en serio peligro, esp01 Cresta (carúncula) roja y dentada, caìda a un lado ; pi esp02 ID --------------- PARRAFO -------------------------------------------------------------------------------- Es un carnìvoro, de color blanco y negro esp03 Es un perico pequeño con la parte superior del cuerpo ve esp04 ID --------------- PARRAFO -------------------------------------------------------------------------------- La ballena azul o rorcual azul gigante es el animal más SQL> SQL> -- Seleccionar el nombre comun, reino, clase y orden de la especie cuyo identificador es esp02 SQL> SQL> SELECT e.descEspecie.extract('/especie/nombreComun') as nombre, e.descEspecie.extract('/especie/reino') as reino, e.descEspecie.extract('/especie/clase') as clase, e.descEspecie.extract('/especie/orden') as orden 2 FROM especies_tab e 3 WHERE e.especie_id='esp02'; NOMBRE -------------------------------------------------------------------------------- REINO -------------------------------------------------------------------------------- CLASE -------------------------------------------------------------------------------- ORDEN -------------------------------------------------------------------------------- Oso panda Animal Mamiferos Carnivoros SQL> SQL> -- Seleccionar el medio en que habita cada una de las especies junto con su identificador SQL> -- El resultado se mostrará ordenado por el identificador de la especie SQL> SQL> SELECT e.especie_id as id, e.descEspecie.extract('/*/medio') as medio 2 FROM especies_tab e; ID --------------- MEDIO -------------------------------------------------------------------------------- esp00 Terrestre esp01 Terrestre esp02 Terrestre ID --------------- MEDIO -------------------------------------------------------------------------------- esp03 Terrestre esp04 Acuático SQL> SQL> SQL> -- CONSULTAS CON HASPATH/INPATH SQL> SQL> -- Seleccionar el id, nombre, identificador de especie y el nombre común del animal del animal llamado perico SQL> -- Tanto el nombre común de la especie, como la comprobación del nombre del animal se realizan sobre los ficheros xml SQL> SQL> SELECT a.animal_id as id, a.nombre as nombre, deref(a.cod_especie).especie_id as especie, deref(a.cod_especie).descEspecie.extract('/especie/nombreComun/text()') as nombre_comun 2 FROM animales_tab a 3 WHERE contains (a.descripcion, 'HASPATH(//nombre="Perico")') > 0; ID NOMBRE --------------- -------------------------------------------------- ESPECIE --------------- NOMBRE_COMUN -------------------------------------------------------------------------------- ani01 Perico esp00 Leopardo SQL> SQL> -- Realizar la consulta anterior empleando INPATH SQL> SQL> SELECT a.animal_id as id, a.nombre as nombre, deref(a.cod_especie).especie_id as especie, deref(a.cod_especie).descEspecie.extract('/especie/nombreComun/text()') as nombre_comun 2 FROM animales_tab a 3 WHERE contains (a.descripcion, 'Perico INPATH(//nombre)') > 0; ID NOMBRE --------------- -------------------------------------------------- ESPECIE --------------- NOMBRE_COMUN -------------------------------------------------------------------------------- ani01 Perico esp00 Leopardo SQL> SQL> -- Seleccionar el id, nombre, nombre común y nombre científico de aquellos animales que han causado incidencias SQL> -- Ordenar el resultado por el id del animal SQL> SQL> SELECT a.animal_id as id, a.nombre as nombre, deref(a.cod_especie).nombreComun as nombre_comun, deref(a.cod_especie).descEspecie.extract('/especie/nombreCientifico/text()') as nombre_cientifico 2 FROM animales_tab a 3 WHERE contains (a.descripcion, 'HASPATH(animal/incidencias/incidencia)') > 0 4 ORDER BY a.animal_id; ID NOMBRE --------------- -------------------------------------------------- NOMBRE_COMUN -------------------------------------------------- NOMBRE_CIENTIFICO -------------------------------------------------------------------------------- ani01 Perico Leopardo Panthera pardus ani03 Turuleta Gallina Gallus gallus ID NOMBRE --------------- -------------------------------------------------- NOMBRE_COMUN -------------------------------------------------- NOMBRE_CIENTIFICO -------------------------------------------------------------------------------- ani04 Pancho Oso panda Ailuropoda melanoleuca ani08 Moby Dick Ballena azul ID NOMBRE --------------- -------------------------------------------------- NOMBRE_COMUN -------------------------------------------------- NOMBRE_CIENTIFICO -------------------------------------------------------------------------------- Balaenoptera musculus SQL> SQL> -- Seleccionar el id, nombre común, clase y orden de aquellas especies en las que el término "Cordados" aparezca en cualquier elemento cuya raíz viene marcada por la etiqueta SQL> -- Ordenar el resultado por el id del animal SQL> SQL> SELECT e.especie_id as id, e.nombreComun as nombre_comun, e.clase as clase, e.orden as orden 2 FROM especies_tab e 3 WHERE contains (e.descEspecie, 'Cordados INPATH(//especie)') > 0; ID NOMBRE_COMUN --------------- -------------------------------------------------- CLASE ORDEN ------------------------- ------------------------- esp00 Leopardo Mamíferos Carnívoros esp01 Gallina Aves Galliformes esp03 Periquito Atolero o del Pacìfico Mexicano Aves Psitaciformes SQL> SQL> spool off