MySQL WITH

Don_Pazo

Erfahrenes Mitglied
Gibt es bei MySQL 5 WITH-Rekursion ?

also
Code:
WITH RecRel (eltern, kind, name) AS (
SELECT init.eltern, init.kind, init.name
FROM baum AS init
WHERE init.eltern='2'

UNION all

SELECT stl.eltern, stl.kind, stl.name
FROM RecRel AS rec, baum AS stl
WHERE rec.kind = stl.eltern

) SELECT  DISTINCT *
FROM RecRel;

Ich habe es auf SQL Server 2007 ausprobiert. Es funktioniert.

Weist jemand ob so eine Abfrage beim MySQL 5 (also WITH) funktionieren würde?
 
Tut mir leid, aber ein WITH-Konstrukt gibt es in MySQL nicht, da ich in dem Microsoft SQL-Server nicht bewandert bin, kann ich dir auch keine Lösung nennen, kannst du denn erklären, was der Query machen soll? Denn vllt gibt es ja etwas ähnliches in MySQL
 
Wieso UNION ALL, wenn du nachher DISTINCT abfragst?

Code:
SELECT init.eltern, init.kind, init.name
FROM baum AS init
WHERE init.eltern='2'
UNION
SELECT stl.eltern, stl.kind, stl.name
FROM RecRel AS rec, baum AS stl
WHERE rec.kind = stl.eltern

UNION (ohne ALL) gibt dir nur die zusätzlichen Zeilen, die nicht schon in der ersten Query zurückkamen.
Versuch das mal...

Übrigens: Die WITH-clause gibt's auch bei Oracle. ;)
 
Die Abfrage ist eine SQL-Rekursion. Weil ich so eine Tabelle habe:

-------------------------
ORDNER | ELTERN | KIND
-------------------------
root......| NULL ... | 1
a_1.......| 1 ....... | 2
a_2.......| 1 ....... | 3
a_3.......| 1 ....... | 4
b_1.......| 2 ....... | 5
b_2.......| 2 ....... | 6
b_3.......| 2 ....... | 7
c_1.......| 4 ....... | 8
d_1.......| 3 ....... | 55
d_2.......| 3 ....... | 122




Es siet ungeführ so aus (man kann sich z.B eine Ordner-Struktur vorstellen):

root_
...... | - a_1 _
.................. | - b_1
.................. | - b_2
.................. | - b_3

...... | - a_2 _
.................. | - d_1
.................. | - d_2
............................................ // also hier können mehrere Unterordner kommen, oder Unter - Unterordner und soweiter.

...... | - a_3 _
.................. | - c_1

Es können aber beliebig viele Unter - Unterordner in d_1 und d_2 ect. sein. Also die Verschachtelung ist nicht vorhersehbar, (beliebig tief)!



Wenn man die Abfrage ausführt bekommt man z.B. alle Unterordner von "a_1", also z.B.
...... | - a_1 _
.................. | - b_1 _
.............................. | - c_1 _
.......................................... | - d_1
.......................................... | - d_2
............................................................ ect. (beliebig tief!)
.............................. | - c_2
.................. | - b_2
.................. | - b_3


Ich hoffe dass jemand von euch weis wie das beim MySQL zu lösen ist ?
 
Zurück