Rekursiver Auflösung einer Tabelle mittels mySQL
Rekursiver Auflösung einer Tabelle mittels mySQL
am 25.04.2007 16:25:17 von news
Hallo,
hat jemand eine Idee wie man folgende verschachtelte Tabelle per SQL
Abfragen kann um dann die untersten elemente zu bekommen?
Tab1:
Feld1 | Feld2
AA | AAB1
AZ | AA
AF | AZ
Ich würde die Tabelle nun gerne so auflösen, dass das Ergebnis dann
wie folgt aussieht:
Feld1 | Feld2
AA | AAB1
AZ | AAB1
AF | AAB1
Es sollen dann praktisch alle Elemente das letzte Element in Kette
beinhalten.
Funktioniert das mit mySQL? Wenn ja wie?
Vielen Dank
Grüße
Michi
Re: Rekursiver Auflösungeiner Tabelle mittels mySQL
am 25.04.2007 16:52:00 von sylvio runge
news@cht3.com wrote:
Bitte konfiguirere mal Deinen Newsreader richtig; danke
>
> Hallo,
>
> hat jemand eine Idee wie man folgende verschachtelte Tabelle per SQL
> Abfragen kann um dann die untersten elemente zu bekommen?
> Tab1:
> Feld1 | Feld2
> AA | AAB1
> AZ | AA
> AF | AZ
>
> Ich würde die Tabelle nun gerne so auflösen, dass das Ergebnis dann
> wie folgt aussieht:
> Feld1 | Feld2
> AA | AAB1
> AZ | AAB1
> AF | AAB1
>
> Es sollen dann praktisch alle Elemente das letzte Element in Kette
> beinhalten.
> Funktioniert das mit mySQL? Wenn ja wie?
Ist recht konfus was Du hier sagst. Ich rate (wegen der 2. Tabelle)
mal; Du willst ein "update ... SET Feld2='AAB1' machen? Wo ist da
aber die verschachtelte Tabelle?
S.
Re: Rekursiver Auflösung einer Tabelle mittels mySQL
am 25.04.2007 17:10:11 von Michael Ziegler
sylvio runge schrieb:
> Ist recht konfus was Du hier sagst. Ich rate (wegen der 2. Tabelle)
> mal; Du willst ein "update ... SET Feld2='AAB1' machen? Wo ist da
> aber die verschachtelte Tabelle?
Ich vermute eher er möchte per select sowas wie die transitive Hülle der
Tabelle haben, nur quasi ohne die "Zwischenstationen".
Man kann ja auflösen:
AA -> AAB1
AZ -> AA -> AAB1
AF -> AZ -> AA -> AAB1
Und als Ergebnis soll dann rauskommen:
AA -> AAB1
AZ -> AAB1
AF -> AAB1
Gruß,
Michael
Re: Rekursiver Auflösung einer Tabelle mittels mySQL
am 26.04.2007 09:04:06 von news
On 25 Apr., 17:10, Michael Ziegler
wrote:
> sylvio runge schrieb:
>
> > Ist recht konfus was Du hier sagst. Ich rate (wegen der 2. Tabelle)
> > mal; Du willst ein "update ... SET Feld2=3D'AAB1' machen? Wo ist da
> > aber die verschachtelte Tabelle?
>
> Ich vermute eher er möchte per select sowas wie die transitive Hülle =
der
> Tabelle haben, nur quasi ohne die "Zwischenstationen".
>
> Man kann ja auflösen:
>
> AA -> AAB1
> AZ -> AA -> AAB1
> AF -> AZ -> AA -> AAB1
>
> Und als Ergebnis soll dann rauskommen:
>
> AA -> AAB1
> AZ -> AAB1
> AF -> AAB1
>
> Gruß,
> Michael
Hallo Michael,
dass ist genau dass was ich möchte. Habe mich glaube ich etwas komisch
ausgedrückt. Gibt es hier eine Möglichkeit das so auszugeben.
Grüße
Michi
Re: Rekursiver Auflösung einer Tabelle mittels mySQL
am 26.04.2007 11:28:22 von Michael Ziegler
news@cht3.com schrieb:
> dass ist genau dass was ich möchte. Habe mich glaube ich etwas komisch
> ausgedrückt. Gibt es hier eine Möglichkeit das so auszugeben.
Ich hab grade mal nach fertigem SQL-Code für die transitive Hülle
gesucht, dummerweise nichts gefunden, und ich weiß nicht wie man das am
besten codet :/
Meine Grundidee lautet: Transitive Hülle erzeugen und nur die Einträge
selektieren, bei denen die rechte Seite nicht auf der linken Seite der
Original-Tabelle vorkommt. Will sagen:
Ausgangstabelle:
Feld1 | Feld2
AA | AAB1
AZ | AA
AF | AZ
Transitive Hülle davon:
Feld1 | Feld2
AA | AAB1
AZ | AA
AZ | AAB1
AF | AZ
AF | AA
AF | AAB1
Nun selektiere aus der transitiven Hülle alle Tupel, deren Feld2 nicht
in Feld1 der Ausgangstabelle vorkommt, also die Tupel:
Feld1 | Feld2
AA | AAB1
AZ | AAB1
AF | AAB1
Nun ist ein Coder gefragt der das umsetzen kann - oder eine bessere Idee
hat :P
Viele Grüße,
Michael
Re: Rekursiver Auflösung einer Tabelle mittels mySQL
am 27.04.2007 20:28:44 von news
Genau so habe ich mir das auch gedacht. Nur leider weiß ich nicht wie
man das mit einem SQL Statement hinbekommt. Ich weiß einfach nicht wo
ich ansetzen soll. Auch in der mysql Dokumentation bin ich nicht
weitergekomen. Kann mir jemand mit dem Statement weiter helfen?
Danke
Michi
On 26 Apr., 11:28, Michael Ziegler
wrote:
> n...@cht3.com schrieb:
>
> > dass ist genau dass was ich möchte. Habe mich glaube ich etwas komisch
> > ausgedrückt. Gibt es hier eine Möglichkeit das so auszugeben.
>
> Ich hab grade mal nach fertigem SQL-Code für die transitive Hülle
> gesucht, dummerweise nichts gefunden, und ich weiß nicht wie man das am
> besten codet :/
>
> Meine Grundidee lautet: Transitive Hülle erzeugen und nur die Einträge
> selektieren, bei denen die rechte Seite nicht auf der linken Seite der
> Original-Tabelle vorkommt. Will sagen:
>
> Ausgangstabelle:
> Feld1 | Feld2
> AA | AAB1
> AZ | AA
> AF | AZ
>
> Transitive Hülle davon:
> Feld1 | Feld2
> AA | AAB1
> AZ | AA
> AZ | AAB1
> AF | AZ
> AF | AA
> AF | AAB1
>
> Nun selektiere aus der transitiven Hülle alle Tupel, deren Feld2 nicht
> in Feld1 der Ausgangstabelle vorkommt, also die Tupel:
> Feld1 | Feld2
> AA | AAB1
> AZ | AAB1
> AF | AAB1
>
> Nun ist ein Coder gefragt der das umsetzen kann - oder eine bessere Idee
> hat :P
>
> Viele Grüße,
> Michael