site:enseignement:master:bdle:tmes:sqlrecursif
Différences
Ci-dessous, les différences entre deux révisions de la page.
| Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
| site:enseignement:master:bdle:tmes:sqlrecursif [09/12/2016 10:48] – amann | site:enseignement:master:bdle:tmes:sqlrecursif [19/10/2017 11:06] (Version actuelle) – hubert | ||
|---|---|---|---|
| Ligne 1: | Ligne 1: | ||
| + | {{indexmenu_n> | ||
| + | |||
| ====== SQL et récursion ====== | ====== SQL et récursion ====== | ||
| - | + | ||
| ===== Connexion Oracle ===== | ===== Connexion Oracle ===== | ||
| - | [[http:// | + | <del>[[http:// |
| + | |||
| + | [[site: | ||
| + | Quelques liens intéressants: | ||
| + | * [[https:// | ||
| ===== Chargement de Données ===== | ===== Chargement de Données ===== | ||
| Ligne 30: | Ligne 37: | ||
| ---- | ---- | ||
| - | **Question 2**: Affichez tous les noeuds atteignables à partir du noeud 1 et la longueur des chemins. Ensuite, affichez également les chemins (SYS_CONNECT_BY_PATH). | + | **Question 2**: Exécutez |
| + | <code sql> | ||
| + | SELECT DISTINCT target, level, SYS_CONNECT_BY_PATH(SOURCE, | ||
| + | FROM myedges | ||
| + | START WITH SOURCE=1 | ||
| + | CONNECT BY prior target=SOURCE; | ||
| + | </ | ||
| ---- | ---- | ||
| - | **Question 3**: Affichez tous les pairs de noeuds dans G et la longueur des chemins entre eux (il faut utiliser CONNECT_BY_ROOT). Triez le résultats sour les attributs source et target. Ensuite, affichez également les chemins. | + | **Question 3**: Affichez tous les pairs de noeuds dans G et la longueur des chemins entre eux (il faut utiliser |
| ---- | ---- | ||
| - | **Question 4**: Insérez les deux arcs suivants et évaluez à nouveaux les requêtes précédentes (il faudra ajouter le mot clé NOCYCLE après CONNECT BY): | + | **Question 4**: Insérez les deux arcs suivants et évaluez à nouveaux les requêtes précédentes (il faudra ajouter le mot clé [[https:// |
| <code SQL> | <code SQL> | ||
| Ligne 48: | Ligne 61: | ||
| ---- | ---- | ||
| - | **Question 5**: Affichez tous les pairs de noeuds dans G et la longueur des chemins entre eux ainsi l' | + | **Question 5**: Affichez tous les pairs de noeuds dans G et la longueur des chemins entre eux ainsi l' |
| Ligne 57: | Ligne 70: | ||
| ---- | ---- | ||
| **Question 7**: Affichez pour chaque noeud le nombre de cycles. | **Question 7**: Affichez pour chaque noeud le nombre de cycles. | ||
| + | |||
| + | ---- | ||
| + | ***Question 8**: Exécutez la requête suivante et analysez le résultat. Changez la stratégie de parcours (DEPTH FIRST, BREADTH FIRST) et l' | ||
| + | <code SQL> | ||
| + | with R2(source, | ||
| + | as ( | ||
| + | | ||
| + | union all | ||
| + | | ||
| + | ) | ||
| + | search breadth first by source set o1 | ||
| + | cycle target set end to 1 default 0 | ||
| + | select * from R2 | ||
| + | order by o1; | ||
| + | </ | ||
| + | |||
| + | |||
| + | |||
| + | ---- | ||
| + | **Question 9**: Ecrivez une requête qui retourne tous les pairs de noeuds et la longueur du plus court chemin. | ||
| + | |||
| Ligne 103: | Ligne 137: | ||
| ---- | ---- | ||
| - | **Question 3.1** : La question avec une requête récursive (clause WITH). | + | **Question 3.1** : La question |
| Ligne 116: | Ligne 150: | ||
| **Question 4.1** : Question 4 en utilisant une requête récursive (clause WITH et sans CONNECT_BY). Pour construire le chemin on peut concaténer deux chaînes de caractères en utilisant | **Question 4.1** : Question 4 en utilisant une requête récursive (clause WITH et sans CONNECT_BY). Pour construire le chemin on peut concaténer deux chaînes de caractères en utilisant | ||
| + | ---- | ||
| + | **Question 4.2** : Au lieu d' | ||
| - | **Question 4.2** : Question 4 en utilisant une requête | + | < |
| + | SET autotrace trace stat | ||
| + | </ | ||
| + | |||
| + | Exécutez la requête | ||
| + | |||
| + | Explications :{{https://docs.oracle.com/ | ||
| + | |||
| + | Avant de conteinuer, il faut faire: | ||
| + | < | ||
| + | SET autotrace off | ||
| + | </ | ||
| ---- | ---- | ||
| **Question 5** : | **Question 5** : | ||
| - | Donnez une requête qui affiche, pour les utilisateurs ' | + | Donnez une requête qui affiche, pour les utilisateurs ' |
| Résultat: 154 lignes | Résultat: 154 lignes | ||
| + | |||
| + | ---- | ||
| + | **Question 5.1**: Question 5 en utilisant | ||
| ---- | ---- | ||
| Ligne 137: | Ligne 187: | ||
| <code SQL> | <code SQL> | ||
| - | Create VIEW edges_view(usr, | + | Create VIEW edges_view(usr, |
| + | SELECT usr, neighbor FROM edges | ||
| + | UNION ALL | ||
| + | SELECT neighbor, | ||
| + | ); | ||
| </ | </ | ||
| Ligne 148: | Ligne 202: | ||
| Résultat: 34 | Résultat: 34 | ||
| + | |||
| + | ---- | ||
| + | ***Question 8bis**: Calculez l' | ||
| ---- | ---- | ||
| Ligne 199: | Ligne 256: | ||
| - | ===== Mandelbrot ===== | + | ===== Mandelbrot |
| Téléchargez le fichier [[http:// | Téléchargez le fichier [[http:// | ||
site/enseignement/master/bdle/tmes/sqlrecursif.1481276935.txt.gz · Dernière modification : de amann
