Ankündigung

Einklappen
Keine Ankündigung bisher.

Left Join mit gleichem Spaltennamen in mehreren Tabellen

Einklappen

Neue Werbung 2019

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

  • Left Join mit gleichem Spaltennamen in mehreren Tabellen

    Hallo zusammen,

    leider komme ich gerade nicht weiter… Und zwar möchte ich auf meiner Seite eine checklist Ausgabe ausgeben. Die Benutzer konnten diese vorher wählen. Ich habe drei Tabellen (in dem Falle hund, katze, maus) mit dem gleichen Spaltennamen „user_id“ in dem die id des Benutzers gespeichert ist, wenn er die jeweilige Checkbox vorher ausgewählt hat.

    Jetzt möchte ich eine Join Abfrage machen, nur kommt immer die Meldung das es einen Fehler gibt. Ich weiß nicht genau wo ich da auf dem Schlauch stehe.


    PHP-Code:
    SELECT
    benutzerdaten
    .id ,
    hund.user_id,
    katze.user_id,
    maus.user_id
    FROM
    benutzerdaten
    LEFT JOIN
    hund ON hund
    .user_id benutzerdaten.id
    LEFT JOIN
    katze ON katze
    .user_id benutzerdaten.id
    LEFT JOIN
    maus ON maus
    .user_id benutzerdaten.id
    WHERE id 
    '$id‘“ 
    Danke schonmal für eure Hilfe.

  • #2
    Auf den ersten Blick habe ich jetzt nur einen Syntaxfehler gefunden.
    Code:
    ... FROM
        benutzerdaten
    Am besten wäre es, wenn du mal die Fehlermeldung postest.

    Kommentar


    • #3
      So auf den ersten Blick (und bei der Informationslage natürlich nicht mit letzter Gewissheit) scheint mir dein Datenbankdesign komisch zu sein. Inwiefern unterscheiden sich denn die Tabellen Hund, Katze und Maus?
      Nebenbei noch zur Namensgebung "benutzerdaten", in einer DATENbank ist davon auszugehen, dass man "Daten" findet. Die Tabelle "benutzer" zu nennen würde ich für passender halten. Wenn man noch einen Schritt weiter gehen möchte und noch nicht ausschließen will, dass an dem Code auch von anderen gearbeitet wird, würde ich zur englischen Sprache greifen.

      Kommentar


      • #4
        Zitat von eT18 Beitrag anzeigen
        Auf den ersten Blick habe ich jetzt nur einen Syntaxfehler gefunden.
        Code:
        ... FROM
        benutzerdaten
        Am besten wäre es, wenn du mal die Fehlermeldung postest.
        Stimmt, dahinter ist ein Punkt. Der ist in meinem Dokument eigentlich nicht drin, ich weiß leider nicht wie dieser dahin gekommen ist.

        Die Fehlermeldung kommt nachher, wo ich in der While Schleife die ergenisse mit mysqli_fetch_array ausgeben möchte. Es kommt die Meldung, dass nur ein parameter möglich ist oder so ähnlich und nach ausprobieren habe ich herausgefunden das es daran liegt, dass alle Namen "user_id" heißen.

        Kommentar


        • #5
          Zitat von ChromOxid Beitrag anzeigen
          So auf den ersten Blick (und bei der Informationslage natürlich nicht mit letzter Gewissheit) scheint mir dein Datenbankdesign komisch zu sein. Inwiefern unterscheiden sich denn die Tabellen Hund, Katze und Maus?
          Nebenbei noch zur Namensgebung "benutzerdaten", in einer DATENbank ist davon auszugehen, dass man "Daten" findet. Die Tabelle "benutzer" zu nennen würde ich für passender halten. Wenn man noch einen Schritt weiter gehen möchte und noch nicht ausschließen will, dass an dem Code auch von anderen gearbeitet wird, würde ich zur englischen Sprache greifen.

          Ich habe meine Abfrage hier etwas anders dargestellt um es einfacher nachher zu verstehen. Eigentlich ist alles auf Englisch und es handelt sich um ein Einstellungsmenü. Wenn der Nutzer vorher eingegeben hat, dass Einstellung 1 und Einstellung 3 aktiviert sein sollen, wird in der ersten und dritten Tabelle die id des Benutzers gespeichert. Wenn ich nachher die Daten abfragen möchte und in der ersten und dritten Tabelle einen Eintrag finde weiß ich das diese aktiviert sind. Wenn wie in diesem Falle in Tabelle zwei nicht steht weiß ich, dass es deaktiviert ist.

          Das Problem kommt bei der Whileschleife auf wo ich mit mysqli_fetch_array die Daten ausgeben möchte. Dort steht dann, dass mysqli_fetch_array nur einen Parameter übergeben kann (wenn ich mich nicht täusche). Nach ausprobieren habe ich eben herausgefunden, dass die namen "user_id", die in allen Tabellen gleich sind dafür verantworlich sind. Wenn ich diese umgeändert habe ging es, nur ich möchte es halt gerne ohne umändern hinbekommen.

          Kommentar


          • #6
            die Fehlermeldung sagt wahrscheinlich was von Ambiguous .. zu deutsch mehrdeutig ..

            Und dann kommt PHP ins Spiel, da PHP den Tabellennamen komplett ignoriert hast du dann bei deinem Design 1..2 oder 3 mal die Spalte user_id ... und PHP macht daraus EINE - wenn du das verhindern willst, vergib ALIASe

            sprich
            PHP-Code:
            SELECT
            benutzerdaten
            .id ,
            hund.user_id AS hund_id,
            katze.user_id AS katze_id,
            maus.user_id AS maus_id
            FROM
            .... 
            - du kannst dir gern passendere Spaltennamen ausdenken .. aber fakt ist - die 3 sollten sich unterscheiden
            "Irren ist männlich", sprach der Igel und stieg von der Drahtbürste [IMG]http://www.php.de/core/images/smilies/icon_lol.gif[/IMG]

            Kommentar


            • #7
              Zitat von eagle275 Beitrag anzeigen
              die Fehlermeldung sagt wahrscheinlich was von Ambiguous .. zu deutsch mehrdeutig ..

              Und dann kommt PHP ins Spiel, da PHP den Tabellennamen komplett ignoriert hast du dann bei deinem Design 1..2 oder 3 mal die Spalte user_id ... und PHP macht daraus EINE - wenn du das verhindern willst, vergib ALIASe

              sprich
              PHP-Code:
              SELECT
              benutzerdaten
              .id ,
              hund.user_id AS hund_id,
              katze.user_id AS katze_id,
              maus.user_id AS maus_id
              FROM
              .... 
              - du kannst dir gern passendere Spaltennamen ausdenken .. aber fakt ist - die 3 sollten sich unterscheiden



              Vielen Dank, fehler gefunden und wieder was dazu gelernt

              Kommentar

              Lädt...
              X