3 pagine in totale: <<Indietro 1 [2] 3 Avanti >>
Le query di tipo JOIN con la modalità RAW
Abbiamo visto che nella modalità RAW le colonne di una tabella sono mappate come attributi e ogni riga è rappresentata da un singolo elemento all'interno del frammento XML, il quale può essere vuoto nel caso non ci siano valori o subelementi da rappresentare. Questa visione del documento XML nella modalità RAW viene definita attributo-centrica perché basata esclusivamente sugli attributi.Anche nel caso di query con JOIN tra diverse tabelle la visione non cambia, difatti pur recuperando i dati da tabelle differenti la query produce un frammento con molteplici elementi row al cui interno ci sono attributi per ogni colonna delle varie tabelle chiamate dalla query di JOIN. Data la query:
SELECT TOP 4 au_lname AS cognome, au_fname AS nome, title AS titolo FROM authors
INNER JOIN titleauthor ON titleauthor.au_id = authors.au_id
INNER JOIN titles ON titles.title_id = titleauthor.title_id
FOR XML RAWEcco il frammento XML prodotto:
<row cognome="Carson" nome="Cheryl" titolo="But Is It User Friendly?"/>
<row cognome="MacFeather" nome="Stearns" titolo="Computer Phobic AND Non-Phobic Individuals: Behavior Variations"/>
<row cognome="Karsen" nome="Livia" titolo="Computer Phobic AND Non-Phobic Individuals: Behavior Variations"/>
<row cognome="O'Leary" nome="Michael" titolo="Cooking with Computers: Surreptitious Balance Sheets"/>Usare la modalità AUTO
La modalità AUTO aumenta rispetto alla precedente il controllo sull'output XML delle query. Innanzitutto ogni elemento del rowset ritornato dalla query porta il nome della tabella (o dell'eventuale alias) presente dopo la clausola FROM dell'istruzione SELECT. Rivediamo la precedente query:
SELECT TOP 4 au_lname AS cognome, au_fname AS nome FROM authors AUTORE FOR XML AUTO
Ecco il risultato:
<AUTORE cognome="Bennet" nome="Abraham"/>
<AUTORE cognome="Blotchet-Halls" nome="Reginald"/>
<AUTORE cognome="Carson" nome="Cheryl"/>
<AUTORE cognome="DeFrance" nome="Michel"/>
Ora l'output XML prodotto dalla query è molto più esplicativo del precedente (nella modalità RAW) e può essere letto con maggiore semplicità e comprensione.
Personalizzare l'output XML con la modalità AUTO
Nella modalità AUTO possiamo usare alias sia di colonna che di tabella per assegnare nomi specifici ad attributi ed elementi del frammento XML. La query vista sopra è un buon esempio di come sia possibile formattare l'output.
Le query di tipo JOIN con la modalità AUTO
Le query di JOIN nella modalità AUTO danno risultati totalmente differenti rispetto alla modalità RAW.
Ogni tabella facente parte della JOIN viene nidificata come elemento all'interno dell'XML prodotto.
SELECT TOP 4 au_lname AS cognome, au_fname AS nome, title AS titolo FROM authors AUTORE
INNER JOIN titleauthor ON titleauthor.au_id = AUTORE.au_id
INNER JOIN titles INFORMAZIONI ON INFORMAZIONI.title_id = titleauthor.title_id
FOR XML AUTOProduce il seguente output XML
<AUTORE cognome="Carson" nome="Cheryl">
<INFORMAZIONI titolo="But Is It User Friendly?"/> </AUTORE>
<AUTORE cognome="MacFeather" nome="Stearns">
<INFORMAZIONI titolo="Computer Phobic AND Non-Phobic Individuals: Behavior Variations"/>
</AUTORE>
<AUTORE cognome="Karsen" nome="Livia">
<INFORMAZIONI titolo="Computer Phobic AND Non-Phobic Individuals: Behavior Variations"/>
</AUTORE>
<AUTORE cognome="O'Leary" nome="Michael">
<INFORMAZIONI titolo="Cooking with Computers: Surreptitious Balance Sheets"/>
</AUTORE>Come potete vedere ogni elemento AUTORE del frammento XML contiene annidato al suo interno l'elemento INFORMAZIONI che riporta le informazioni su ogni singlo libro scritto da quello specifico autore. Pare ovvio che possano esistere n elementi INFORMAZIONI all'interno di ogni singolo AUTORE come specificato dalla relazione N:N (molti a molti) tra le tabelle authors e titles .
3 pagine in totale: <<Indietro 1 [2] 3 Avanti >>
Contenuti dell'articolo
- Pagina 1
- Pagina 2
- Pagina 3
Per inserire un commento, devi registrarti alla nostra community.







Difficoltà
Stampa
Download 


