|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||||||
|
Membre éclairé
![]() Inscription : décembre 2003 Messages : 517 ![]() |
Bonjour,
voici le contexte. J'ai une table collaborateur, qui a un Type_collab. Chaque collab a un "chef" qui est lui même un collab un collab de type ingénieur a forcément dans sa hierarchie un collab de type chef de projet. un collab de type chef de projet a forcément dans sa hierarchie un collab de type manager. un collab de type directeur n'a pas de chef (idHierarchie = null) Le problème c'est qu'un ingénieur peut avoir dans sa hierarchie un ingénieur senior entre lui et son chef de projet, voir même un chef d'équipe ... Le chef de projet peut lui être rattaché directement au manager ou bien avoir un directeur de projet... Je sais écrire la requête afin de récupérer le chef de projet de chaque ingénieur. Je sais écrire la requête afin de récupérer le manager de chaque chef de projet J'ai besoin de votre aide pour écrire la requête me permettant de connaitre le chef de projet et son manager pour chaque ingénieur ! Code :
Code :
Code :
merci d'avance !
__________________
|
||||||
|
|
00
|
|
|
#2 |
![]() ![]() |
Il manque les données de départ !
__________________
Email : http://scr.im/waldar |
|
00
|
|
|
#3 | ||
|
Membre éclairé
![]() Inscription : décembre 2003 Messages : 517 ![]() |
En effet,
voici le jeu d'essai concernant les résultats indiqués dans le premier message. Code :
__________________
|
||
|
|
00
|
|
|
#4 | ||
![]() ![]() |
J'ai utilisé cette solution là, pas complètement satisfaisante car j'ai supposé que CP était toujours juste en-dessous de Manager :
Code :
__________________
Email : http://scr.im/waldar |
||
|
00
|
|
|
#5 |
|
Membre éclairé
![]() Inscription : décembre 2003 Messages : 517 ![]() |
En effet, de mon coté je n'ai pas trouvé mieux, mais ça ne répond pas au besoin initial puisque CP et Manager peuvent être reliés via un DP ou plus hélas.
En attendant un miracle, je fais 2 requêtes Ingé > CP et CP > Manager et je boucle dans le code Java. Merci pour la tentative Waldar !
__________________
|
|
|
00
|
|
|
#6 | ||
![]() ![]() |
Quitte à faire les deux requêtes, autant faire la jointure dans le SQL :
Code :
__________________
Email : http://scr.im/waldar |
||
|
00
|
|
|
#7 |
|
Membre éclairé
![]() Inscription : décembre 2003 Messages : 517 ![]() |
Bonjour,
merci pour cette solution, j'approche du but ! J'ai essayé de mettre ton code dans un vue pour une utilisation en Java mais la clause With dans la création de vue ne semble pas passer...
__________________
|
|
|
00
|
|
|
#8 | ||
![]() ![]() |
Pas de soucis :
Code :
__________________
Email : http://scr.im/waldar |
||
|
00
|
|
|
#9 |
|
Membre éclairé
![]() Inscription : décembre 2003 Messages : 517 ![]() |
ça y est ça fonctionne !
j'ai repris dans l'autre sens ta proposition et j'ai supprimé le With. dans ta dernière requête, dans la clause FROM j'ai remplacé le nom des tables par la requête correspondante. Bon, 6 secondes d'exécution mais j'ai mes résultats, comme les perf ne sont pas un prérequis pour ce batch, l'objectif est atteint. Merci !
__________________
|
|
|
00
|
|
|
#10 |
![]() ![]() |
En comparaison à la boucle Java, que donnent les performances ?
Si la vue est souvent appelée et que les données sont relativement fixes, ça peut être utile de regarder du côté des vues matérialisées.
__________________
Email : http://scr.im/waldar |
|
00
|
|
|
#11 |
|
Membre éclairé
![]() Inscription : décembre 2003 Messages : 517 ![]() |
La vue n'est appelée qu'une fois par mois, la nuit, dans le cadre d'un batch qui durera près d'une heure, donc 6 secondes de plus ou de moins, c'est pas dérangeant, merci
![]() et puis ça mets 6 sec sur mon poste, ptete que sur le super système multi trucs de prod ça va dépoter !
__________________
|
|
|
00
|
|
|
#12 |
|
Membre éclairé
![]() Inscription : décembre 2003 Messages : 517 ![]() |
Avec un peu de d'améliorations c'est encore mieux !
Je ne ramène plus les libellés dans ma vue mais uniquement les id (sur lesquels il y a des indexes) donc je ne provoque plus de full scan sur la table. Résultat, au lieu de 6 sec, ça mets 0,4 sec sur mon poste , pour une table de départ a 21.000 enregistrements.
__________________
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com