MySQL WITH
-
Gibt es bei MySQL 5 WITH-Rekursion ???
also
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?
-
Ich kenne WITH nicht, aber ich rate einfach mal. WITH ist
Bei der Abfrage erzeugst Du mittels UNION ALL ein Ergebnisset, aus dem Du dann mittels SELECT DISTINCT die doppelten entfernst. Weißt Du eigentlich, was das ALL nach UNION bewirkt? UNION ohne ALL liefert keine doppelten. Mit ALL bekommst Du die doppelten, die Du mit dem äusseren SELECT wieder entfernst:
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
Wenn ich das WITH richtig verstehe ist es auch identisch mit:
SELECT DISTINCT * FROM ( 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 ) AS tab1;
Wobei ich nicht weiß, ob Mysql das kann.
Tntnet