hi,
Das ist sehr interessant.
Finde ich auch ;)
Was dahinter steckt ist die Normalisierung (jaja, immer wieder dasselbe, danke Herr Codd).
Allgemein: Bei einer 1:n Beziehung braucht es zwei Tabellen. Bei einer n:m Beziehung braucht es eine Tabelle mehr, also drei.
Mit dem SELF-Join erzeugst Du diese 3 Tabellen, die referentielle Integrität läuft dazu über das Feld 'a' und die Bedingungen in der Whereklause können nun mit AND verknüpft werden, weil drei Tabellen gegeben sind.
Allerdings denke ich, es ist bei der dynamischen Abfrage eher schlechter als die andere Lösung, da man hier, so würde ich es machen, mit zwei Schleifen die Unterabfrage aufbauen müsste (die zwei joins, wo man so etwas wie join tab as x_i bräuchte, und die Bedingungen x_0 = 1 and x_1 = 3 etc. Ich denke, das ist sehr unübersichtlich, aber für nichtdynamische Sachen ist es auf jeden Fall (be)merkenswert, auch dafür danke.
Das wäre zu überlegen, das liegt an Dir ;)
Hotti
Wenn der Kommentar nicht zum Code passt, kann auch der Code falsch sein.