MySQL 5.5.8 Table mit Baumstruktur mit einer anderen Table verbinden

Vandroiy

Mitglied
Hallo Community,

ich hab folgendes Szenario, ich besitze 2 Table, die 1. Tabel ist eine Baumstruktur und die 2. Table verweist auf die Baumstruktur
1. Table
Code:
id|parent|Name
1|0|Muster
2|1|Gabi
3|1|Fritz
4|2|Hans
2. Table
Code:
id|table1_id|Hinweis
1|3|Kartoffeln
2|3|Farbstoff
3|4|Nudeln
4|1|Grün
Nun möchte ich gerne die 2.Table mit der 1. Verknüpfen und die ganzen Kinder einträge sehen.
Also sollte es so aussehen
Code:
id|Name|Hinweis|Eltern
1|Fritz|Farbstoff|Muster
2|Fritz|Kartoffeln|Muster
3|Hans|Nudeln|Gabi
3|Hans|Nudeln|Muster

oder so

id|Name|Hinweis|Eltern
1|Fritz|Farbstoff|Muster
2|Fritz|Kartoffeln|Muster
3|Hans|Nudeln|Gabi,Muster

Hab mir auch schon folgendes angeschauthttp://wiki.yaslaw.info/wikka/MySQLTree
Aber ich weis nicht wie ich nun die zwei ineinander Verschateln soll. Mit einer Function geht das ohne Probleme Tutorials Lösung.

Ich freue mich über jede Idee die ihr habt. Und ja mir sind keine besseren Tabellen beispiele Eingefallen.

Mit freundlichen Grüßem
 
Also ich hab mal etwas versucht
SQL:
Select t1.id,t1.Name,t2.hinweis,
        (SELECT
        GROUP_CONCAT(iid ORDER BY rownum DESC SEPARATOR '->') AS path
        FROM
        (
            SELECT  
                @rownum := @rownum+1 AS rownum,
                mylist.id AS id,
                IF(@lastl <> mylist.id, @id := mylist.id, @id) AS setVarId,
                @id AS iid,
                @lastl := mylist.id AS setVarLast,
                @id := (SELECT parent FROM table1  WHERE id = @id) AS parentID
            FROM 
                (SELECT @id := 0, @lastl := 0, @rownum := 0) AS vars,
                (SELECT id FROM table1) AS myloop,
                (SELECT id FROM table1) AS mylist  
        ) AS t
        WHERE iid != 0
        GROUP BY id) as path
From table1 as t1,
table2 as t2
where t1.id = t2.table1_id
Die Anzeige sieht schon gut aus aber leider nicht so wirklich richtig wie ich es möchte. Den bei den Path zeigt er mir ganz oft die Pfade der Table1 an.
Code:
id|Name|Hinweis|path
1|Hans|Nudel|1->2->3->4->1->2->3->4->1->2->3->4 usw.
 
Schmeiss doch einfach das Resultat von http://wiki.yaslaw.info/wikka/MySQLTree2 in ein Subquery und verbinde das mit deiner table2

SQL:
SELECT
    tree.id,
    tree.name,
    t2.hinweis,
    tree.path
FROM
    ( -- Hier das Qiery das die Pfade zusammensetzt 
        SELECT
            t.id,
            GROUP_CONCAT(pathid ORDER BY rownum DESC SEPARATOR '>') AS id_path,
        ...
    ) AS tree
    INNER JOIN table2 AS t2
        ON tree.id = t2.table1_id
 
Zuletzt bearbeitet von einem Moderator:

Neue Beiträge

Zurück