dannis90: [MySQL] Subselect Mutter / Kind

Hallo zusammen,

ich habe eine Tabelle mit folgender Struktur: ID | Name | MutterID (Standard 0) | Kreis

Ich möchte nun alle Personen aus dieser Tabelle aus einem bestimmt Kreis (2) abfragen. Die 'Kinder' werden leider ohne Kreis gespeichert.

Ich frage nun alle Einträge mit Kreis = 2 ab und möchte auch alle zugehörigen Kinder aus derselben Datenbank joinen. Kinder sind mit der MasterID (=ID) an Ihre Mutter gekoppelt.

Meine Idee: (liefert mir ein falschen Ergebnis)

SELECT ID, Name, Kreis  
FROM tabelle t1  
WHERE t1.kreis = 2 and t1.MutterID=0  
OR 1 < (SELECT count(t2.id) from tabelle t2 where t2.MutterID = t1.ID) 

LG Dannis

  1. Grüße,
    als vermutuntg:

    SELECT * FROM Kinder WHERE MasterID IN (SELECT MutterID FROM Mutter WHERE Kreis=2)

    kA ob das so geht
    MFG
    bleicher

    --
    __________________________-

    FirefoxMyth
  2. Hallo Dannis,

    ich habe eine Tabelle mit folgender Struktur: ID | Name | MutterID (Standard 0) | Kreis

    Ich möchte nun alle Personen aus dieser Tabelle aus einem bestimmt Kreis (2) abfragen. Die 'Kinder' werden leider ohne Kreis gespeichert.

    Ich frage nun alle Einträge mit Kreis = 2 ab und möchte auch alle zugehörigen Kinder aus derselben Datenbank joinen. Kinder sind mit der MasterID (=ID) an Ihre Mutter gekoppelt.

    wenn ich Dich richtig verstanden habe, möchtest Du in etwa das:

    -- Alle Personen, denen Kreis 2 direkt zugeordnet sind  
    SELECT  
        ID,  
        Name,  
        MasterID,  
        Kreis  
    FROM  
        tabelle  
    WHERE  
        Kreis = 2  
    -- verbunden mit allen Personen, deren Mutter aus Kreis 2 ist  
    UNION  
    SELECT  
        ID,  
        Name,  
        MasterID,  
        Kreis  
    FROM  
        tabelle  
    WHERE                     -- wobei nur die Datensätze interessieren  
        MasterID IN (         -- deren MasterID  
            SELECT            -- in der Auswahl der  
                t2.ID         -- IDs vorkommt  
            FROM              -- (d.h. deren Mutter aus Kreis 2 ist)  
                tabelle t2  
            WHERE             -- die  
                Kreis = 2     -- direkt aus Kreis 2 sind  
        )  
    
    

    Statt fehlerhaften SQLs wäre es hilfreicher gewesen, ein paar Beispieldatensätze und das gewünschte Ergebnis vorzustellen, mit der Begründung warum das gewünschte Ergebnis so wäre.

    Freundliche Grüße

    Vinzenz