> Tech > Utiliser des UNIONs

Utiliser des UNIONs

Tech - Par Renaud ROSSET - Publié le 24 juin 2010
email

Il faut maintenant écrire une requête SQL pour produire le jeu de résultats requis. Ce processus n'est pas toujours simple et direct parce que les données ne sont probablement pas stockées dans le format natif qu'exige la table universelle. Il faudra donc convertir certains noms de colonnes et structures de

Utiliser des UNIONs

données. Cette conversion
peut se faire à  l’aide de UNIONs pour
joindre des ensembles de résultats afin
de produire le format de table universelle
requis. Cette approche ne brille
pas par son élégance mais elle est facile
à  comprendre et raisonnablement efficace.
Autre solution : créer une table
temporaire qui a les lignes et les noms
de colonnes requis pour la table universelle,
puis sélectionner dans cette
table. Pour des hiérarchies plus complexes,
cette méthode présente certains
avantages, comme nous le verrons
plus loin.
Voyons comment utiliser des
UNIONs en écrivant le SQL qui produit
le XML de la figure 2. Pour faciliter la
compréhension du code, commençons
par écrire le SQL nécessaire pour
construire les deux niveaux de reporting
supérieurs. Dans Query Analyzer,
exécutez la requête que montre le listing
2,
pour produire le XML de la
figure 6.
A noter que vous ne devez définir
les alias de colonnes qu’avec le premier
SELECT de l’instruction UNION ;
SQL Server utilise ces noms de colonnes
pour le recordset résultant. J’ai
mis les alias de noms de colonnes
entre crochets parce que le point d’exclamation
est un caractère illicite pour
un alias de colonne.
On voit bien qu’il faut beaucoup de
SQL pour produire une petite quantité
de XML, bien que le code SQL Server
puisse traiter un nombre quelconque
d’employés. Le code SQL devient plus
compliqué si l’on ajoute un niveau de
plus : dans ce cas, tous les employés
qui reportent à  Bert, Jack ou Donna.
Pour ajouter ce niveau, il faut ajouter
un autre UNION, comme le montre le
listing 3. Cet ajout produit le XML de la
figure 7.
Dans cette approche, il faut utiliser
un UNION supplémentaire pour
chaque niveau d’éléments dans le
XML, ce qui rend le code SQL ingérable.
Cet exemple présente la difficulté
supplémentaire d’exiger un
nombre croissant de self joins à  chaque
niveau. Il apparaît clairement qu’il
n’est pas possible d’utiliser des
UNIONs quand les niveaux sont très
nombreux. Quand chaque niveau a
une dépendance vis-à -vis des niveaux
précédents, il vaut mieux recourir à 
une table temporaire.

Téléchargez cette ressource

Guide inmac wstore pour l’équipement IT de l’entreprise

Guide inmac wstore pour l’équipement IT de l’entreprise

Découvrez toutes nos actualités à travers des interviews, avis d'experts et témoignages clients et ainsi, retrouvez les dernières tendances et solutions IT autour de nos 4 univers produits : Poste de travail, Affichage et collaboration, Impression et capture et Infrastructure.

Tech - Par Renaud ROSSET - Publié le 24 juin 2010