Problem mit einer Abfrage:

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

  • Problem mit einer Abfrage:

    Hallo
    ich hab folgendes Problem...
    diese Datenbankstruktur liegt vor:

    foren_thread: threadid | fid (forumid)| ...
    foren_post: postid | tid | ...

    nun möchte ich mit einer Abfrage die Anzahl der Threads und dazugehörige Anzahl an Posts ermitteln...

    also ich habs mit dieser Abfrage hier versucht aber es funktioniert so nicht
    vielleicht kann mir jemand meinen Fehler sagen...?
    PHP-Code:
    $sql "SELECT COUNT(thread.threadid) AS threadcount, COUNT(post.postid) AS postcount 
                        FROM "
    .$kl_tbl_pre."forum_thread thread 
                        INNER JOIN "
    .$kl_tbl_pre."forum_post post ON thread.threadid = post.tid
                        WHERE thread.fid = 
    $fid
                        GROUP BY thread.threadid"


  • #2
    deine spalte threadid ist die gleiche wie die spalte tid oder irre ich mich da?

    falls nicht, zähle die postid group by tid und am schluss die num_rows von mysql, dann brauchst du kein inner join, hast eine tabelle mit post für jedes thread und eine variable mit der gesatzahl der threads.

    Kommentar


    • #3
      erstmal danke für die antwort jochenj

      ja die spalte tid in der post tabelle kennzeichnet die zugehörigkeit zum Thread (threadid in der threads tabelle)

      das JOIN brauch ich doch aber irgendwie... weil ich muss ja beide tabellen abfragen den ich möchte ja folgendes haben
      - alle threads die einem bestimmten forum gehören zählen
      - und dann die anzahl der posts von diesen threads zählen

      Kommentar


      • #4
        generell könntest du mal das ergebnis des obigen querys nennen, man kannst zwar denken, aber sicher ist sicher.

        Kommentar


        • #5
          es kommt kein fehler...aber es kommen immer zwei gleiche zahlen raus
          die wieder die postanzahl nocht die threadzahl sind...

          Kommentar


          • #6
            Überprüfe die SQl-Anweisung doch mal im phpmyadmin.
            Oder Du lässt Dir $sql mal per echo ausgeben.

            Kommentar


            • #7
              okay erstmal danke für den Hinweis, Innuendo, bin jetzt etwas weiter gekommen

              mit dieser Abfrage:
              PHP-Code:
              SELECT thread.threadidCOUNTpost.postid )
              FROM test_forum_thread thread
              INNER  JOIN test_forum_post post ON thread
              .threadid post.tid
              WHERE thread
              .fid =8
              GROUP  BY post
              .tid 
              Ergebnis:
              threadid | COUNT( post.postid )
              113 | 34
              115 | 3
              119 | 6
              120 | 5
              122 | 2
              123 | 23

              so jetzt müssen nur noch alle posts (rechte spalte) zusammengerechnet werden und die der thread geht jetzt mit num_rows()

              Kommentar


              • #8
                ich habs jetzt so hinbekommen...
                PHP-Code:
                                    //Anzahl der Themen und Beitäge in diesem Forum
                          
                $sql "SELECT thread.threadid, COUNT( post.postid )  AS postcount,
                                    MAX(post.postid) AS lastpostid
                                    FROM test_forum_thread thread
                                    INNER  JOIN test_forum_post post ON thread.threadid = post.tid 
                                    WHERE thread.fid = 
                $fid
                                    GROUP BY thread.threadid"
                ;
                          
                $subresult mysql_query($sql) or die(mysql_error());
                                    
                                    
                //Anzahl der Threads
                                    
                $threadcount mysql_num_rows($subresult);
                                    
                                    
                //Anzahl der Posts
                                    
                $postcount 0;
                                    for(
                $ii=0;$ii<$threadcount;$ii++)
                                        {
                                  
                mysql_data_seek($subresult,$ii);                        
                                            
                $subrow mysql_fetch_assoc($subresult);
                                            
                $postcount += $subrow['postcount'];
                                        } 
                ist zwar ein wenig umständlich (oder nicht)... aber es tut

                Kommentar

                Lädt...
                X