Dans une table appelée "mygroup" dans la base de données. J'affiche ces données de la table dans le format de l'arborescence ci-dessous: En réalité, l'exigence est que je dois visiter la racine la plus basse pour chaque groupe, si ce groupe respectif n'est pas utilisé dans d'autres des tables spécifiques alors je supprimerais cet enregistrement de la table respective. P> Je n'ai besoin d'obtenir tous les détails que pour le groupe principal appelé "Vishal Group", veuillez vous reporter aux deux snaps, une contient des données de table entière et la Autre Snap (Snap, Détails du format de l'arbre) affiche les données attendues, c'est-à-dire que je n'ai besoin que de ces enregistrements à la suite d'une exécution SQL. P> J'ai essayé avec une jointure auto (généralement nous faisons pour la relation de colonne MGR et employé), mais pas de succès pour obtenir les enregistrements qui relèvent du "groupe Vishal" qui est la base de tous les enregistrements. P> J'ai ajouté une table DDL et insérez SQL pour référence ci-dessous. Et également attaché à la manière dont les données ressemblent à la table. P> aucune idée Comment obtenir des enregistrements qui tombent sous "Vishal Group"? P> < un href = "https://i.stack.imgur.com/5xhcr.png" rel = "nOfollow noreferrer"> p>
3 Réponses :
Vous pouvez utiliser une procédure stockée récursive comme ceci: lorsque le paramètre d'entrée est )
Le résultat est: p> update strong> p> est-il possible d'obtenir un enregistrement "Groupe Vishal" également dans la sortie? P>
blockQuote> Oui, première lecture Vous pouvez exécuter la procédure ci-dessus dans une autre procédure comme: p> puis utilisez p> ou p> si vous utilisez pk_group comme paramètre p> p> p> {CD1E33D1-1666-49B9 -83BE-067687E4DDD6} code> (pk de
Vishal Group Code> P>
Salut Val, merci pour vos précieux efforts et votre aide. Lors de l'exécution du code que vous avez fourni, je reçois une erreur comme "Fin de commande inattendue - Line 8, Colonne 20". Souhaitez-vous corriger le code?
:) .... L'erreur arrive à la ligne numéro 8 I.E. "DÉCLARE VARIABLE I INTEGER;". Je gère votre SP dans l'IDE «Flamerobin» pour vous connecter à la base de données Firebird.
Ya, cela m'a aidé à créer une procédure stockée dans Firebird. Mais Val, quand j'ai exécuté SP dans la flamerobine, comme "exécution de la procédure Mygroup_Proc" {CD1E33D1-1666-49B9-83BE-067687E4DDDD6} '", il ne me donne qu'un enregistrement comme une sortie en flamerobine.
Utilisez SELECT * à partir de MyGroup_Proc (..) comme image ci-dessus
Yesssssssssss, Val, tu es l'homme du moment. Votre SQL Just Just Rocks, Just Rocks ..... Awesome Karol, juste génial .....
Est-il possible d'obtenir un enregistrement «Groupe Vishal» également dans la sortie?
Autre alternative plus propre à une procédure stockée récursive, voici une procédure stockée à l'aide de CTE (expressions de table communes): alors vous pouvez utiliser: p>
Ceci est juste pour partager une connaissance, au-dessous de SQL n'est pas écrit par moi, mais je l'ai eu du groupe Firebird Yahoo. Mais je respecte hautement et j'apprécie très bien l'aide que vous m'avez donnée.
SQL: p> avec les meilleures salutations. P> Vishal P> < / p>
Avez-vous testé ce code? Je pense que le résultat ne sera que les lignes qui contiennent {CD1E33D1-1666-49B9-83BE-067687E4DDDD6} code> in
linked_to_group code> champs. Les nœuds du champ. Mais je peux me tromper.
Oui, vous avez droit Val, les sous-nœuds sont manquants. Laisse moi voir.
Bien. Maintenant, regarde mieux. Ceci est récursif CTE (expressions de table communes) ... comme la réponse ci-dessous.
De quel RDBMS s'agit-il? Veuillez ajouter une balise pour spécifier si vous utilisez
mySQL code>,
postgreSQL code>,
sql-serveur code>,
oracle code> ou < Code> DB2 code> - ou quelque chose d'autre entièrement.
Tagué à Firebird. J'utilise la base de données Firebird.
Firebird soutient des expressions de table communes récursives. Vous devriez pouvoir utiliser n'importe quel exemple de postgres: Stackoverflow.com/questions/tagged/recursive-query+Postgresq l
Il y a toujours la possibilité de construire une structure en code pour la représenter. Plutôt que d'essayer de faire quelque chose de cela compliqué dans SQL, créez simplement la structure que vous souhaitez après avoir renvoyé toute la table de SQL. Devrait être très rapide sauf si vous avez 100 000 rangées