Ankündigung

Einklappen
Keine Ankündigung bisher.

LEFT JOIN Auflistung listet Benutzer mehrmals auf

Einklappen

Neue Werbung 2019

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

  • LEFT JOIN Auflistung listet Benutzer mehrmals auf

    Hallo,

    ich bin gerade dezent am Verzweifeln. Ich möchte aus 2 Tabellen Werte mit einem LEFT JOIN auswerten. Diese Tabellen sind einmal members (alle Benutzerdaten) und vacation (Liste aller Abwesenheiten). Natürlich kann ein Benutzer mehrere oder auch gar keine Abwesenheiten haben. Dennoch sollen alle Benutzer aufgelistet werden, und hinter jene, die eine Abwesenheit haben, eine Markierung gesetzt werden. Ich habe es mit folgendem Befehl versucht:
    Code:
    SELECT m.uid, m.preName, m.lastName,
                 v.startdate, v.enddate, v.reason, v.isAllowed
                FROM members m
                LEFT JOIN vacation v ON m.uid = v.uid
                ORDER BY m.lastName DESC
    Dabei werden mir allerdings die Benutzer so oft aufgelistet, wie sie eine Abwesenheit in der Tabelle vacation haben, Also mindestens einmal, und bei bspw. 3 Abwesenheiten halt 3 mal

    So sieht es in PHPMyAdmin aus:
    db_fail_01.PNG

    Und so auf der PHP Website:
    db_fail_02.PNG

    Hat einer von euch eine Idee?

    GROUP BY m.uid hatte ich schon probiert, allerdings werden mir dann nicht mehr alle Abwesenheiten, sondern nurnoch eine Angezeigt.

    Vielen lieben Dank für eure Hilfe

    LG und schönes Wochenende

  • #2
    Hat einer von euch eine Idee?
    Was du suchst, nennt sich Gruppenbruch. Mit PDO laesst sich das über den Parameter PDO::FETCH_GROUP erreichen.

    Kommentar


    • #3
      Oder siehe auch hier: https://php-de.github.io/jumpto/gruppenbruch/
      The string "()()" is not palindrom but the String "())(" is.

      Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
      PHP.de Wissenssammlung | Kein Support per PN

      Kommentar


      • #4
        uid und vid sollten keine Varchar Typen sein sondern am besten Integer und uid zudem Primary Key sein.
        Bitte überprüfe erst mal deine DB auf korrektes Design und mache danach erst weiter, sonst hast du immer wieder Probleme.

        so soll es mindestens sein:
        engine=innodb, charset=utf-8, collation=utf8_general_ci

        Kommentar


        • #5
          Aber die uid ist ja der Benutzername. Den kann ich ja nicht als integer speicher, da er Buchstaben enthält. Mein PK ist ja das Feld id, das aber gar nicht abgefragt wird.

          Kommentar


          • #6
            Code:
            id | username | surname | firstname | email | ...
            The string "()()" is not palindrom but the String "())(" is.

            Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
            PHP.de Wissenssammlung | Kein Support per PN

            Kommentar


            • #7
              Dann mach halt zwei Felder draus (ID & Name).

              Kommentar


              • #8
                hab ich doch: id | uid | email | password...

                Kommentar


                • #9
                  Aber es reicht, wenn id ein INT ist.

                  Kommentar

                  Lädt...
                  X