proier: MYSQL JOIN Zweier Ergebnisse unter Verwendung des ersten

Hallo zusammen,

ich versuche mich gerade an einem Weg 2 Abfragen ein und derselben Tabelle miteinander zu verbinden.

Die Tabelle ist wie folgt aufgebaut:
ID | MasterID | Name
1  | 0        | Horst
2  | 0        | Hans
3  | 2        | Hennes
4  | 0        | Jan

MasterID verweist auf dieselbe Tabelle, bzw. ID eines anderen Namen. Dies stellt hierbei die "Verbindung" dar. Grob ausgedrückt, z.B. Vater / Sohn.

Ich habe ein Problem bei der Verwendung von LIMIT bzw. einer Suche z.B. eines Namens. Die Ergebnisse müssen zwangsweise immer auch die Kinder bzw. Väter beinhalten.

Mache ich also ein LIMIT 2 auf die obige Tabelle, soll zusätzlich zum Datensatz 1 (Horst) und 2 (Hans) eben auch 3 (Hennes) erscheinen, da dies ja zu 2 gehört.

Ich hatte es mit Union probiert, aber hierbei darf ich kein Alias auf eine Tabelle / Abfrage verwenden.

Für Lösungsansätze bin ich sehr dankbar.

Viele Grüße,
Prioer

  1. Hallo,

    und wie genau sahen deine bisherigen Versuche aus? Ich nehme an, das LIMIT 2 das gesamte Ergebnis einfach auf die 2 (die ersten 2, also Horst und Hans) beschränkt. Keine Ahnung ob du das bezweckt hast?

    Frank

    1. Hallo,

      und wie genau sahen deine bisherigen Versuche aus? Ich nehme an, das LIMIT 2 das gesamte Ergebnis einfach auf die 2 (die ersten 2, also Horst und Hans) beschränkt. Keine Ahnung ob du das bezweckt hast?

      Ja, ein einfaches Limit funktioniert ja nicht.
      Ich hatte in der ersten Abfrage mit Limit 2 alle Abgerufen die eben zutreffen (mit Suche oder nicht) und in der zweiten Abfrage alle Einträge derren Master in der ersten Abfrage als ID vorkommen. Die Verbindung dieser beiden und die Verwendung der Abfragen aus der 1. klappt nicht.

      Danke für deine Hilfe!

      1. Du suchst einen Lösungsansatz: Der könnte "Unterabfrage" sein, auch "sub-select" oder "sub-query" genannt. Ob das in deiner Version von mysql funktioniert, weiss ich nich - du hast dazu ja nicht viel geschrieben.

        Anderer Lösungsansatz: Warum muss es denn in einer einzigen Abfrage sein?Mach doch eine für die LIMIT 2 von allen  "Parent" Einträgen und ein schleifchen darüber mit einer weiteren Abfrage für alle "Child" Einträge.

        Und ja, ich weiss über den Einfluss auf die Geschwindigkeit bei grösseren Datenmengen.

  2. Hi,

    Hallo zusammen,

    ich versuche mich gerade an einem Weg 2 Abfragen ein und derselben Tabelle miteinander zu verbinden.

    Die Tabelle ist wie folgt aufgebaut:
    ID | MasterID | Name
    1  | 0        | Horst
    2  | 0        | Hans
    3  | 2        | Hennes
    4  | 0        | Jan

    MasterID verweist auf dieselbe Tabelle, bzw. ID eines anderen Namen. Dies stellt hierbei die "Verbindung" dar. Grob ausgedrückt, z.B. Vater / Sohn.

    Ich habe ein Problem bei der Verwendung von LIMIT bzw. einer Suche z.B. eines Namens. Die Ergebnisse müssen zwangsweise immer auch die Kinder bzw. Väter beinhalten.

    Mache ich also ein LIMIT 2 auf die obige Tabelle, soll zusätzlich zum Datensatz 1 (Horst) und 2 (Hans) eben auch 3 (Hennes) erscheinen, da dies ja zu 2 gehört.

    Du machst einen inneren select, der Dir die gewünschten Master-IDs ermittelt (also Horst und Hans).
    Im äußeren Select, der dann die eigentlich gewünschten Spalten enthält, suchst Du die Datensätze raus, für die die ID oder die Master-ID aus dem inneren Select stammt.

    cu,
    Andreas

    --
    Warum nennt sich Andreas hier MudGuard?
    O o ostern ...
    Fachfragen per Mail sind frech, werden ignoriert. Das Forum existiert.