Je traduis les instructions SQL Server SQL dans leur équivalent générique ANSI actuellement, et je suis bloqué avec une instruction récursive en utilisant une instruction WITH.ANSI 92 Instruction SQL récursive requise
Par souci de se concentrer sur la question, je vais simplifier la question comme suit
Si j'ai deux tables
ReportingUnit
- col1: Clé
- col2: ParentReportingUnitKey
Facility
- col1: Key
- col2: ParentReportingUnitKey
Cette structure est décrit une hiérarchie des unités d'exploitation jusqu'à une installation, une unité d' peut avoir 0 .. 1 unités déclarantes parentales directes et 0 .. n unités déclarantes enfants.
Une facilité est un enregistrement «feuille» qui lie à une unité de rapport.
J'ai besoin pour élaborer une norme ANSI 92 valide l'instruction SQL (ou au pire un qui fonctionne sur Oracle, DB2 et SQL Server) qui renverra toutes les installations liées à une unité de déclaration donnée partout dans la hiérarchie.
par exemple.
- ReportingUnit R1 a ReportingUnit enfants R1.1 et R1.2
- ReportingUnit R1.1 a des enfants R1.1.1, R1.1.2
ReportingUnit R1.2 a des enfants R1.2.1, R1 .2.2
Facility F1 dispose d'une unité de reporting parent R1.1.1
- Facility F2 dispose d'une unité de reporting parent R1.1.2
- Faci lité F3 dispose d'une unité de reporting mère R1.2.1
- Facility F4 dispose d'une unité de reporting parent R1.2.2
Ayant à l'esprit il y a peut-être 0 .. n niveaux de récursivité dans la table ReportingUnit, comment Je retourne toutes les 4 installations d'une instruction SQL étant donné le paramètre ReportingUnit = R1?
+1. Les ensembles imbriqués sont * la * manière de faire des hiérarchies de profondeur arbitraire en SQL; une clé étrangère parent-row n'est presque jamais une solution utilisable. – bobince
En fait, je préfère la conception de la relation d'adjacence sur les ensembles imbriqués. Et la solution "parent_id" est toujours adéquate (et plus simple) si vous n'avez jamais besoin d'interroger des arbres complets, seulement des enfants immédiats ou des parents. –