JOIN oder WHERE

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

  • JOIN oder WHERE

    Hallo,

    habe folgendes Problem.

    Ich habe eine Datenbank mit folgenden Tabellen

    USER (id, firstname, lastname)

    ARTICLE (id, user_id, time, text)

    Nun möchte ich durch einen SELECT alle User anzeigen anzeigen, die bereits Artikel geschrieben haben. Dabei soll die Userliste so sortiert sein, dass immer die User ganz oben stehen, die zuletzt Artikel geschrieben haben.


    Gruß
    Jirka

  • #2
    select a.firstname, a.lastname from USER as a
    LEFT JOIN ARTICLE as b on a.id=b.userid
    ORDER BY time DESC

    die sortierung mit deinem Datumsformat mußt du aber selber aushandeln, hab keine ahnung, was du da eingetragen hast!

    gruss

    Kommentar


    • #3
      PHP-Code:
      SELECT FROM user LEFT JOIN article ON user.id article.user_id WHERE text IS NOT NULL 
      Der Spaltenname Text in der Article musst du ändern...
      Das statment ist natürlich ungetestet... Versuch es mal ob es klappt.
      mfg
      Günni


      Praxis: Jeder kann´s, aber keiner weiß wie´s geht...
      Theorie: Jeder weiß wie´s geht, aber keiner kann´s ...
      Microsoft vereint Praxis und Theorie: Nix geht und keiner weiß warum
      City-Tiger - Online durch die Straßen tigern...

      Kommentar


      • #4
        es geht auch nur mit where, aber dann siehst du die user, die noch keine artiekl geschrieben haben, nicht
        Ich denke, also bin ich. - Einige sind trotzdem...

        Kommentar


        • #5
          Hab aber irgendwo mal gelesen, dass die JOIN Abfragen Performanter sein sollen als die Where Abfragen...
          mfg
          Günni


          Praxis: Jeder kann´s, aber keiner weiß wie´s geht...
          Theorie: Jeder weiß wie´s geht, aber keiner kann´s ...
          Microsoft vereint Praxis und Theorie: Nix geht und keiner weiß warum
          City-Tiger - Online durch die Straßen tigern...

          Kommentar


          • #6
            Funktioniert erst einmal, aber wenn nun ein User mehrere Artikel geschrieben hat, wird er auch mehrmals aufgelistet. Er soll aber dennoch nur einmal in der Liste vorkommen.

            Kommentar


            • #7
              Code:
              SELECT
                a.firstname, a.lastname,
                COUNT(b.id) anzahl
              FROM
                user a
                LEFT JOIN article b ON a.id=b.userid
              GROUP BY
                b.userid
              ORDER BY 
                time DESC
              so hast du gleich noch die anzahl der geschriebenen artikel
              Ich denke, also bin ich. - Einige sind trotzdem...

              Kommentar


              • #8
                Funktioniert prima.

                Vielen Dank für die schnelle Hilfe.

                Kommentar

                Lädt...
                X