Rekursive SQL Abfrage funktioniert nicht
Hallo,
habe eine MariaDB Version 10.1.44 auf Ubuntu 18.04
Folgendes möchte ich erreichen:
In einer Tabelle ad_gruppe_membergruppe mit 2 Spalten stehen Gruppen (Feld gruppe_cn) und MemberGruppen (Feld membergruppe_cn).
nun möchte ich herausfinden, in welchen Gruppen die Gruppe_99 Mitglied ist.
Ergebnis wäre: Gruppe_99 in Gruppe_4 in Gruppe_1 in Gruppe_2
Mein erster Versuch:
Ergebnis ist eine Fehlermeldung 'Error in SQL Syntax, check the ... right syntax to use near 'cte AS (SELECT a.gruppe_cn, a.membergruppe_cn FROM ad_gruppe_membergruppe a' at line 1.
Also hab ich erst einmal eine einfache Abfrage erstellt (wie in https://mariadb.com/kb/en/with/ beschrieben):
Fehlermeldung: wie oben, ... right syntax to use near ' gesamte Zeile 1 '
Bin ratlos. Kann jemand helfen?
vG
LS
habe eine MariaDB Version 10.1.44 auf Ubuntu 18.04
Folgendes möchte ich erreichen:
In einer Tabelle ad_gruppe_membergruppe mit 2 Spalten stehen Gruppen (Feld gruppe_cn) und MemberGruppen (Feld membergruppe_cn).
gruppe_cn | membergruppe_cn
----------+-----------------
Gruppe_1 | Gruppe_33
Gruppe_1 | Gruppe_4
Gruppe_2 | Gruppe_1
Gruppe_4 | Gruppe_99
...
nun möchte ich herausfinden, in welchen Gruppen die Gruppe_99 Mitglied ist.
Ergebnis wäre: Gruppe_99 in Gruppe_4 in Gruppe_1 in Gruppe_2
Mein erster Versuch:
WITH cte AS (
SELECT a.gruppe_cn, a.membergruppe_cn FROM ad_gruppe_membergruppe a
UNION ALL
SELECT cte.gruppe_cn, b.membergruppe_cn FROM cte
JOIN ad_gruppe_membergruppe b ON cte.membergruppe_cn = b.gruppe_cn
)
SELECT * FROM cte WHERE membergruppe_cn = 'Gruppe_4'
Ergebnis ist eine Fehlermeldung 'Error in SQL Syntax, check the ... right syntax to use near 'cte AS (SELECT a.gruppe_cn, a.membergruppe_cn FROM ad_gruppe_membergruppe a' at line 1.
Also hab ich erst einmal eine einfache Abfrage erstellt (wie in https://mariadb.com/kb/en/with/ beschrieben):
WITH gruppe_1 AS ( select * from ad_gruppe_membergruppe where gruppe_cn = 'Gruppe_4')
select * from gruppe_1;
Bin ratlos. Kann jemand helfen?
vG
LS
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 563735
Url: https://administrator.de/contentid/563735
Ausgedruckt am: 23.11.2024 um 13:11 Uhr
7 Kommentare
Neuester Kommentar
WITH RECURSIVE xxx
test=*# select * from ad_gruppe_membergruppe ;
gruppe_cn | membergruppe_cn
-----------+-----------------
gruppe_1 | gruppe_33
gruppe_1 | gruppe_4
gruppe_2 | gruppe_1
gruppe_4 | gruppe_99
(4 rows)
test=*# WITH recursive cte AS (
SELECT a.gruppe_cn, a.membergruppe_cn FROM ad_gruppe_membergruppe a
UNION ALL
SELECT cte.gruppe_cn, b.membergruppe_cn FROM cte
JOIN ad_gruppe_membergruppe b ON cte.membergruppe_cn = b.gruppe_cn
)
SELECT * FROM cte WHERE membergruppe_cn = 'gruppe_4';
gruppe_cn | membergruppe_cn
-----------+-----------------
gruppe_1 | gruppe_4
gruppe_2 | gruppe_4
(2 rows)
test=*#