|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Candidat au titre de Membre du Club
![]() Inscription : novembre 2004 Messages : 36 ![]() |
Bonjour,
Je cherche à savoir s'il est possible de retourner via Oracle le résultat d'un arbre en masquant un fils tout en gardant la relation. Exemple : Arbre initial : Contenu en base : Je décide de ne pas afficher 3 : Contenu souhaité retourné par requête : Est-ce faisable ? Si oui quelle est la requête permettant de faire ça ? J'ai tenté en mettant la condition d'exclusion dans la clause where, les relations sont conservées mais le résultat retourné est... Or 3 n'existe pas donc le lien est cassé. Ma base de donnée est composée d'une table OBJET contenant les objets (pères et fils) et une table RELATION contenant uniquement l'idpere et l'idfils. Mon boolean d'affichage est dans une troisième table CAPTEUR, la jointure se faisant sur un attribut codecapteur de OBJET. Structures des tables (en souligné la clé primaire, en italique la clé étrangère) : OBJET : identifiant (int) | nom (varchar) | codecapteur (varchar) RELATION : idpere (int) | idfils (int) CAPTEUR : codecapteur (varchar) | affichable (boolean) |
|
|
00
|
|
|
#2 | ||
![]() ![]() |
Je pense que votre cas de figure est un peu trop simplifié.
La solution qui a mon avis n'en est pas une car codée en dur : Code :
__________________
Email : http://scr.im/waldar |
||
|
00
|
|
|
#3 | ||||
|
Candidat au titre de Membre du Club
![]() Inscription : novembre 2004 Messages : 36 ![]() |
Effectivement, le cas décrit est un peu trop simpliste.
Je précise donc : Arbre initial : Contenu en base : Code :
Contenu souhaité retourné par requête : Code :
Du coup le contenu souhaité serait : La requête ne peut donc être écrite "en dur" puisque dépendant du codecapteur. Cependant, merci de m'avoir fait découvrir la fonction lag qui devrait pouvoir m'aider... |
||||
|
|
00
|
|
|
#4 | ||||
|
Membre expérimenté
![]() François Inscription : février 2010 Messages : 306 ![]() |
Code :
Code :
|
||||
|
|
00
|
|
|
#5 | ||
|
Candidat au titre de Membre du Club
![]() Inscription : novembre 2004 Messages : 36 ![]() |
Merci pour ta réponse, Rams7s.
Toutefois, je suis un peu dubitatif. J'arrive à avoir un arbre retourné par requête. Ce que je n'arrive pas à avoir, c'est un arbre avec des relations conservées malgré l'absence de certains noeuds. Ci-joint le code SQL de création de ma base (simplifiée) : Code :
|
||
|
|
00
|
|
|
#6 | |||
|
Membre Expert
![]() Inscription : août 2009 Messages : 779 ![]() |
Citation:
En reprenant l'exemple entamé, pour cadrer avec ton point : Code :
|
|||
|
|
00
|
|
|
#7 | |||||
|
Candidat au titre de Membre du Club
![]() Inscription : novembre 2004 Messages : 36 ![]() |
Citation:
Avec : Je vais obtenir en supprimant 312 : Code :
Code :
|
|||||
|
|
00
|
|
|
#8 |
|
Membre Expert
![]() Inscription : août 2009 Messages : 779 ![]() |
Ahhh, d'accord. J'avais mal compris le besoin, autant pour moi !
Je pense pouvoir te proposer quelque chose dans l'après-midi, selon ma disponibilité, si personne n'a donné de solution d'ici là |
|
|
00
|
|
|
#9 | ||
|
Membre Expert
![]() Inscription : août 2009 Messages : 779 ![]() |
Je te propose ceci - j'ai fait ça vite fait, donc sans reprendre toutes tes tables, mais l'adaptation devrait être ok :
Code :
|
||
|
|
00
|
|
|
#10 | |
|
Candidat au titre de Membre du Club
![]() Inscription : novembre 2004 Messages : 36 ![]() |
Merci beaucoup
J'avoue que je ne "vois" pas le résultat de la requête par TOAD : Citation:
Exemple : Si je supprime 234 et 312, vais-je obtenir : ? P.S.: j'ai cherché dans la FAQ comment afficher le résultat avec TOAD, mais je n'ai pas trouvé :/ |
|
|
|
00
|
|
|
#11 |
|
Membre Expert
![]() Inscription : août 2009 Messages : 779 ![]() |
Oui, concrètement il prend l'arbre, puis pour chaque ligne lui associe le premier élément non filtré en remontant.
Par contre ce que tu dis me semble bizarre : tu as adapté ma requête, ou bien tu l'as juste testée ? Je l'ai précisément faite sous TOAD
|
|
|
00
|
|
|
#12 | |
|
Candidat au titre de Membre du Club
![]() Inscription : novembre 2004 Messages : 36 ![]() |
J'ai fait un copier-coller basique dans une fenêtre Editor.
Si je l'execute avec "Execute Statement" ou avec "Execute as script": Citation:
|
|
|
|
00
|
|
|
#13 |
|
Membre Expert
![]() Inscription : août 2009 Messages : 779 ![]() |
Etrange ?
Je dois avouer ne pas avoir testé sur une 10g (je n'en n'ai pas sous la main présentement), mais autant que je me souvienne je n'ai rien utilisé qui ne soit pas disponible sur la 10g. |
|
|
00
|
|
|
#14 |
|
Expert Confirmé Sénior
![]() François Chef de projet NTIC Inscription : janvier 2007 Messages : 5 352 ![]() |
J'ai fait un copier-coller dans Oracle SQL Developper et ça fonctionne parfaitement tel quel. (en 10g).
__________________
Je ne réponds pas aux questions techniques par MP ! Le forum est là pour ça... Une réponse vous a aidé ? utiliser le bouton "L’ennui dans ce monde, c’est que les idiots sont sûrs d’eux et les gens sensés pleins de doutes". B. Russel |
|
|
00
|
|
|
#15 | ||||||
![]() Salim Développeur et DBA Oracle Inscription : octobre 2006 Messages : 872 ![]() |
Salut,
Une autre méthode avec la version 10g(Model clause). J'espère que cette solution reponds à ton besoin. Solution: Code :
Code :
Code :
__________________
Publications: http://schelabi.developpez.com/ |
||||||
|
|
00
|
|
|
#16 | ||||
![]() Salim Développeur et DBA Oracle Inscription : octobre 2006 Messages : 872 ![]() |
Salut,
Deuxième version, solution améliorée. Code :
Code :
__________________
Publications: http://schelabi.developpez.com/ |
||||
|
|
00
|
|
|
#17 |
|
Candidat au titre de Membre du Club
![]() Inscription : novembre 2004 Messages : 36 ![]() |
Merci beaucoup pour toutes vos réponses.
Pour l'anecdote, apparemment mon Toad utilise un driver 8.1 pour s connecter en 10G, d'où les problèmes avec les requêtes en WITH... Je vais marquer le problème en résolu pour l'instant et si besoin viendrai le ré-éditer. |
|
|
00
|
|
|
#18 |
![]() Salim Développeur et DBA Oracle Inscription : octobre 2006 Messages : 872 ![]() |
Salut,
Tu peux le tester avec sqlplus.
__________________
Publications: http://schelabi.developpez.com/ |
|
|
00
|
|
|
#19 | ||||
![]() Salim Développeur et DBA Oracle Inscription : octobre 2006 Messages : 872 ![]() |
Salut,
J'ai amélioré ma requête parce que celle du poste précédant ne fonctionnée pas pour cette exemple. Code :
Code :
__________________
Publications: http://schelabi.developpez.com/ |
||||
|
|
00
|
Copyright © 2000-2012 - www.developpez.com