replies in einem thread

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

  • replies in einem thread

    hallo,
    ich bin gerade dabei ein forum zu basteln und versuche jetzt die liste der threads zu erstellen. das klappt auch ganz gut, nur möchte ich in der selben abfrage auch den user haben, der als letztes gepostet hat.

    bei der letzten abfrage gibt es leider einen fehler
    PHP-Code:
    mysqlSELECT FROM user;
    +---------+-----------+
    user_id user_name |
    +---------+-----------+
    |       
    user0     |
    |       
    user1     |
    +---------+-----------+

    mysqlSELECT FROM post;
    +---------+----------+---------+------------+
    post_id topic_id user_id post_time  |
    +---------+----------+---------+------------+
    |       
    |        |       1097095172 |
    |       
    |        |       1098224712 |
    |       
    |        |       1098224767 |
    |      
    10 |        |       1098393264 |
    |      
    17 |        |       1098490534 |
    |      
    20 |        |       1098562917 |
    +---------+----------+---------+------------+

    mysqlSELECT post_iduser_idpost_timeCOUNT(*)-AS replies
        
    -> FROM post
        
    -> GROUP BY topic_id
        
    -> ORDER BY topic_id ASC;
    +---------+---------+------------+---------+
    post_id user_id post_time  replies |
    +---------+---------+------------+---------+
    |       
    |       1097095172 |       |
    |      
    10 |       1098393264 |       |
    +---------+---------+------------+---------+

    mysqlSELECT post_iduser.user_namepost_timeCOUNT(*)-AS replies
        
    -> FROM post
        
    -> GROUP BY topic_id
        
    -> LEFT JOIN user ON user.user_id post.user_id;

    ERROR 1064You have an error in your SQL syntax
    Check the manual that corresponds to your MySQL 
    server version 
    for the right syntax to use near 
    'LEFT JOIN user ON user.user_id = post.user_id' at line 4 
    nicht alles, was nass ist, kann fliegen

  • #2
    GROUP BY gehört hinter JOIN
    Ich denke, also bin ich. - Einige sind trotzdem...

    Kommentar


    • #3
      danke für die antwort
      und es geht jetzt ..... allerdings zeigt er mir die ältesten posts an. ich wollte aber die neusten?
      mit dem order by kann ich nur die groups selber sortieren
      nicht alles, was nass ist, kann fliegen

      Kommentar


      • #4
        Original geschrieben von ShoAn
        [...]mit dem order by kann ich nur die groups selber sortieren
        order by post_time desc ???

        Kommentar


        • #5
          hmm, naja auch nicht wirklich
          PHP-Code:
          mysqlSELECT post_iduser.user_namepost_timeCOUNT(*)-AS replies
              
          -> FROM post
              
          -> LEFT JOIN user ON user.user_id post.user_id
              
          -> GROUP BY topic_id
              
          -> ORDER BY post_time DESC;
          +---------+-----------+------------+---------+
          post_id user_name post_time  replies |
          +---------+-----------+------------+---------+
          |      
          10 user1     1098393264 |       |
          |       
          user0     1097095172 |       |
          +---------+-----------+------------+---------+ 
          ich wollte aber die ausgabe, nur weiß ich nicht wie die geht?
          das group ist schon richtig, nur will ich die neusten nachrichten in einer gruppe angezeigt haben.
          PHP-Code:
          +---------+-----------+------------+---------+
          post_id user_name post_time  replies |
          +---------+-----------+------------+---------+
          |      
          20 user0     1098562917 |       |
          |      
          17 user1     1098490534 |       |
          +---------+-----------+------------+---------+ 
          nicht alles, was nass ist, kann fliegen

          Kommentar


          • #6
            Könnte das was sein?
            Code:
            SELECT p.post_id, u.user_name, p.post_time, COUNT(distinct q.post_id)-1 replies
              FROM post q
              LEFT JOIN user u ON u.user_id = p.user_id
              LEFT JOIN post p ON p.topic_id=q.topic_id AND p.post_time = MAX(q.post_time)
              GROUP BY topic_id
              ORDER BY post_time DESC;
            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

            Lädt...
            X