Ankündigung

Einklappen
Keine Ankündigung bisher.

SQL Abfrage INNER JOIN etc.

Einklappen

Neue Werbung 2019

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

  • SQL Abfrage INNER JOIN etc.

    Hallo,

    ich versuche eine (MySQL) Tabelle etwas kompliziert auszugeben (Die Struktur ist mir leider so gegeben und im Fall der Fälle kann ich diese ändern, also versuche ich irgendwie damit zu arbeiten)

    Gegeben ist aktuell folgende Tabelle "logozuordnung" (Bsp.):

    ID - LogoID - PartnerID
    1 - 1 - 5120
    2 - 2 - 5120
    3 - 4 - 5120
    4 - 2 - 5121
    5 - 4 - 5121

    Als LogoID gibt es 3 verschiedene möglichkeiten (1,2 und 4). Als Ausgabe (SQL) möchte ich aber folgendes erreichen:

    PartnerID - Logo1 - Logo2 - Logo3
    5120 - 1 - 2 - 4

    Ziel ist es also, alle zur einer Partner_ID gehörigen Logos in eine Zeile zu packen. Ich hab mal etwas rumgespielt (bei Google gesucht und auch hier im Forum)

    PHP-Code:
    SELECT lz1.IDlz1.Partner_IDlz1.Logo_IDlz2.Logo_IDlz3.Logo_ID
    FROM logozuordnung 
    AS lz1
    LEFT JOIN logozuordnung 
    AS lz2 ON (lz1.Partner_ID lz2.Partner_ID)
    LEFT JOIN logozuordnung AS lz3 ON (lz1.Partner_ID lz3.Partner_ID)
    WHERE lz1.Partner_ID 5120
    GROUP BY lz1
    .Partner_ID 
    So wirklich passt das aber nicht. Leider bin ich hier mit meinem SQL Wissen auch schon fast am Ende. Kann mir jemand einen Tipp geben wie ich das am besten Abfrage? Geht das überhaupt so?

    Liebe Grüße

  • #2
    Lass das GROUP BY mal weg und stattdessen SELECT DISTINCT benutzen.

    Den zweiten JOIN würde ich an mit der Bedingung lz2.Partner_ID = lz3.Partner_ID durchführen, ist aber vielleicht auch egal.

    Kommentar


    • #3
      Hallo!

      danke für die Antwort. Ich habe die Abfrage mal so durchgeführt wie du gesagt hast:

      PHP-Code:
      SELECT DISTINCT lz1.IDlz1.Partner_IDlz1.Logo_IDlz2.Logo_IDlz3.Logo_ID
      FROM logozuordnung 
      AS lz1
      LEFT JOIN logozuordnung 
      AS lz2 ON lz1.Partner_ID lz2.Partner_ID )
      LEFT JOIN logozuordnung AS lz3 ON lz2.Partner_ID lz3.Partner_ID )
      WHERE lz1.Partner_ID =5438
      LIMIT 0 
      30 
      Das Ergebnis sieht leider so aus:

      ID Partner_ID Logo_ID Logo_ID Logo_ID
      7 5438 1 1 1
      7 5438 1 1 4
      7 5438 1 4 1
      7 5438 1 4 4
      78 5438 4 1 1
      78 5438 4 1 4
      78 5438 4 4 1
      78 5438 4 4 4

      So "sollte" es sein:


      ID Partner_ID Logo_ID Logo_ID Logo_ID
      7 5438 1 4 0

      Der Partner mit der ID 5438 hat die Logos 1 und 4 zugeordnet.

      Kommentar


      • #4
        Zitat von chr1s-eg Beitrag anzeigen
        ID Partner_ID Logo_ID Logo_ID Logo_ID
        7 5438 1 1 1
        7 5438 1 1 4
        7 5438 1 4 1
        7 5438 1 4 4
        78 5438 4 1 1
        78 5438 4 1 4
        78 5438 4 4 1
        78 5438 4 4 4
        Das ist eine Permutation, jetzt überleg mal scharf durch was die zustande kommt. Wenn du das weißt, sollte die Lösung recht offensichtlich sein.

        Kommentar


        • #5
          Sorry, war Quatsch.

          Kommentar

          Lädt...
          X