SELECT über "verbundene" Datensätze??

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • SELECT über "verbundene" Datensätze??

    Ich komm (auch nach dem durchforsten unzähliger threads) einfach nicht drauf, wie ich folgendes Problem auf einfache Weise und mit möglichst wenig MySQL-Abfragen lösen kann.

    Ich hab folgende Tabelle:
    Code:
    +----+----------------------+
    | ID | Artikel      | Basis |
    +----+--------------+-------+
    |  1 | Pils         |     0 |
    |  2 | Export       |     0 |
    |  3 | Weizen       |     0 |
    |  4 | Bock         |     0 |
    |  5 | Radler       |     2 |
    |  6 | Cola-Bier    |     2 |
    |  7 | Weizenradler |     3 |
    |  8 | Bananeweizen |     3 |
    |  9 | Schwarzbier  |     0 |
    +----+--------------+-------+
    Wie man sieht stehen einige Artikel in gewisser Weise mit anderen in Verbindung. Je nachdem, welche Artikelnummer (ID) abgefragt wird sollen alle damit verbundenen Artikel ausgegeben werden.

    Also bei 1 = Pils, bei 2 = Export, Radler, Cola-Bier, bei 3 = Weizen, Weizenradler, Bananeweizen.
    Aber - und das ist wohl das knifflige - auch bei 6 = Export, Radler, Cola-Bier und bei 8 = Weizen, Weizenradler, Bananeweizen.

    Die Varianten (also IDs 5-8) auf ne andere Tabelle auslagern ist leider nicht möglich.

    Mit ner Unterabfrage bin ich bisher irgendwie nicht weitergekommen...
    Und über ein Result ein Array mit den betreffenden Varianten-IDs + der Basis-ID zu bauen und dann jeweils nochmal ne SELECT durchzuführen scheint mir sehr umständlich.

    Vielleicht liegt's auch nur an meinen mäßigen SQL-Kenntnissen - jedenfalls komm ich nicht weiter und würd mich sehr freuen wenn mir jemand weiterhelfen würde.

  • #2
    Du machst ein JOIN auf

    ID=basis
    und WHERE basis != 0
    Beantworte nie Threads mit mehr als 15 followups...
    Real programmers confuse Halloween and Christmas because OCT 31 = DEC 25

    Kommentar


    • #3
      Ansatz für "gib mir alle Artikel, die mit ID x in Beziehung stehen":
      Erstmal SELECT id, artikel, basis FROM table WHERE id = x
      Damit dann SELECT id, artikel, basis FROM table WHERE id = $basis OR basis = $basis

      Kommentar


      • #4
        Danke, hab's hinbekommen!

        @MelloPie
        entweder hab ich nicht richtig kapiert wie Du das meinst oder umgekehrt... Ist aber auch egal - mein Problem ist dank euch und diesem wunderbaren Forum gelöst!

        Kommentar

        Lädt...
        X