Problem mit LEFT JOIN

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

  • Problem mit LEFT JOIN

    hi....

    ich habe hier folgende abfrage, mit der ich alle läufe angezeigt bekomme, bei dem ein teilnehmer gestartet ist.
    Wie erreich ich nun die Anzeige aller läufe? wo der teilnhmer nicht dabei war sollte dann NULL stehen.

    Hab hier im Forum Sachen mit LEFT JOIN gefunden, aber so richtig wird das nix.

    Code:
    SELECT l.name, e.laeufer_id
    FROM tbl_lauf l
    INNER JOIN tbl_ergebnisse e
    ON e.lauf_id = l.lauf_id
    WHERE SUBSTRING( l.datum, 1, 4  )  =  '2001'
    AND e.laeufer_id = '8'

  • #2
    Ähm ... ohne Kenntnisse über deine Tabelle ... du ersetzst INNER durch LEFT ...

    Kommentar


    • #3
      ON e.lauf_id = l.lauf_id

      kann ersetzt werden mit:

      USING(lauf_id)

      Für deine Frage wäre eine Struktur der Tabelle hilfreich .

      Kommentar


      • #4
        Re: Problem mit LEFT JOIN

        Die Bedingung für die Läufer-ID aus der where-Klausel in die ON-Klausel zu verschieben, sollte helfen:

        SELECT l.name, e.laeufer_id
        FROM tbl_lauf l
        LEFT JOIN tbl_ergebnisse e ON e.lauf_id = l.lauf_id AND e.laeufer_id = '8'
        WHERE SUBSTRING( l.datum, 1, 4 ) = '2001'
        mein Sport: mein Frühstück: meine Arbeit:

        Sämtliche Code-Schnipsel sind im Allgemeinen nicht getestet und werden ohne Gewähr auf Fehlerfreiheit und Korrektheit gepostet.

        Kommentar


        • #5
          wenn ich inner durch left ersetz, dann kommt dasselbe ergebnis raus.

          also es gibt die tabelle

          tbl_lauf: lauf_id | name | datum
          tbl_ergebnisse: ergebniss_id | lauf_id | laeufer_id

          Kommentar


          • #6
            Re: Re: Problem mit LEFT JOIN

            Original geschrieben von Titus
            Die Bedingung für die Läufer-ID aus der where-Klausel in die ON-Klausel zu verschieben, sollte helfen:

            SELECT l.name, e.laeufer_id
            FROM tbl_lauf l
            LEFT JOIN tbl_ergebnisse e ON e.lauf_id = l.lauf_id AND e.laeufer_id = '8'
            WHERE SUBSTRING( l.datum, 1, 4 ) = '2001'
            danke, ja das verschieben der where-klausel hat geholfen.

            Kommentar


            • #7
              ich habe jetzt noch en erweiterung, und zwar habe ich die läufer_id rausgenommen, da ich es nicht für einen einzelnen brauche sondern für alle

              die abfrage ist jetzt so:

              Code:
              SELECT l.name, e.laeufer_id
              FROM tbl_lauf l
              LEFT JOIN tbl_ergebnisse e ON e.lauf_id = l.lauf_id
              WHERE SUBSTRING( l.datum, 1, 4 ) = '2001'
              ORDER BY e.laeufer_id ASC
              nun wird mir jedoch wieder nur von jedem läufer angezeigt wo er mitgemacht hat und keine NULL-Werte

              Kommentar


              • #8
                bist du sicher? durch die Sortierung nach laeufer_id müssen die Null-Werte zusammen stehen. Schon mal im PMA angeschaut?

                Kommentar


                • #9
                  jup.... im PMA hab ich vorher auch schon geschaut, und da wurde mir das so angezeigt

                  Kommentar


                  • #10
                    und was bekommst du mit:
                    ... WHERE SUBSTRING( l.datum, 1, 4 ) = '2001' and e.lauf_id is null ...

                    Kommentar


                    • #11
                      Original geschrieben von asp2php
                      und was bekommst du mit:
                      ... WHERE SUBSTRING( l.datum, 1, 4 ) = '2001' and e.lauf_id is null ...
                      da bekomm ich leider gar nix angezeigt. mich wundert das es geht wenn ich die laeufer_id mit angebe, aber wenn ich es für alle haben will, dann werden keine NULL-Werte angezeigt

                      Kommentar

                      Lädt...
                      X