[SQL allgemein] Die letzten Einträge aus der DB holen

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

  • [SQL allgemein] Die letzten Einträge aus der DB holen

    Hallo Gemeinde,

    mal wieder was von mir, ich brauch eine Denkhilfe.

    Folgendes Programm:

    EDIT:
    Code wegen Überbreite entfernt. Neuer Versuch.
    wahsaga



    Ich hole mir aus "phpbb_posts" die letzten 10 Einträge.
    Danach hole ich mir aus phpbb_topics die Thementitel die dazu gehören.
    Am schluss baue ich mir nen Link auf den Topictitle

    Soweit so gut. Dumm ist an dem Programm, das wenn 3 Post`s in einem Thread sind, ich als ausgabe logischerweise auch die 3 Post`s bekomme. Klar.
    Wie kann ich erreichen, das dies nicht passiert? Also im Prinzip, ist die topic_id schon ausgelesen, dann diese nicht nochmal auslesen in verbindung mit einem anderen Post.
    Ohne das sich das Limit bei der ersten Abfrage verkleinert?
    Gibt`s da eine art UNIQUE das ich im Statement verwenden kann?

    Danke für nen Schubs
    Zuletzt geändert von wahsaga; 11.12.2006, 08:23.

  • #2
    Sorry @wahsaga

    Also gut, neuer Versuch.

    Idee ist es, vor die Abfragen nochmal eine Schleife zu setzen die mir die Topic ID`S als UNIQUE ausliest. ALs ergebnis bekomme ich allerdings nur noch eine Zeile, obwohl Limit auf 10 eingestellt ist:

    PHP-Code:
    $query_getuniquetopic "SELECT DISTINCT topic_id as unique_topic_id FROM phpbb_posts ";
    $query_getuniquetopic.= " order by post_id DESC LIMIT 10";
    $res_getuniquetopic $GLOBALS['TYPO3_DB']->sql_query($query_getuniquetopic);
    if (
    $GLOBALS['TYPO3_DB']->sql_error()) 
    debug(array($GLOBALS['TYPO3_DB']->sql_error(), $query_getuniquetopic));              

    while (
    $row_getuniquetopic $GLOBALS['TYPO3_DB']->sql_fetch_assoc($res_getuniquetopic))
        {

            
    $query_getnewpost "SELECT post_id as getnewpost_post_id, topic_id as getnewpost_topic_id 
            FROM phpbb_posts "
    ;
            
    $query_getnewpost.= " WHERE topic_id = "$row_getuniquetopic["unique_topic_id"] ."";
            
    $res_getnewpost $GLOBALS['TYPO3_DB']->sql_query($query_getnewpost);
            if (
    $GLOBALS['TYPO3_DB']->sql_error()) 
            
    debug(array($GLOBALS['TYPO3_DB']->sql_error(), $query_getnewpost));              
        
            while (
    $row_getnewpost $GLOBALS['TYPO3_DB']->sql_fetch_assoc($res_getnewpost))
                {
                    
    $getnewpost_topic_id $row_getnewpost["getnewpost_topic_id"];
                    
    $query_gettopic "select topic_id as topic_id, topic_title as topic_title 
                    from phpbb_topics "
    ;
                    
    $query_gettopic.= "WHERE topic_id = ".$getnewpost_topic_id."";
                    
    $query_gettopic.= " order by topic_id DESC";
                    
    $res_gettopic $GLOBALS['TYPO3_DB']->sql_query($query_gettopic);
                    if (
    $GLOBALS['TYPO3_DB']->sql_error()) 
                    
    debug(array($GLOBALS['TYPO3_DB']->sql_error(), $query_gettopic));              
        
                    while (
    $row_gettopic $GLOBALS['TYPO3_DB']->sql_fetch_assoc($res_gettopic))
                        {
                            
    $post_id $row_getnewpost["getnewpost_post_id"];
        
                            
    $content.= "<a href =\"http://www.dslr-seite.de/fpost"
                            
    .$post_id.".html#".$post_id."\">"
                            
    .$row_gettopic["topic_title"]."</a><br />";
            
                        }
                }
            
        return 
    $content;
        } 
    Bin ich auf dem richtigen weg?
    Zuletzt geändert von BlackPixel; 11.12.2006, 08:36.

    Kommentar


    • #3
      Danke für diejenigen die angefangen haben sich den Kopf zu zerbrechen.

      hatte das return in der falschen Schleife plaziert

      Eins runter dann kommt das richtige ergebnis zu Tage

      Bis zum nächsten mal

      Kommentar


      • #4
        [MySQL 3.23.X] DISTINCT und WHERE haut nicht hin

        Hallo Gemeinde,

        ich glaub ich komm jetzt wieder öfter

        PHP-Code:
        $query_getuniquetopic "SELECT DISTINCT topic_id as unique_topic_id FROM phpbb_posts ";
        $query_getuniquetopic.= " order by post_id DESC";
        $query_getuniquetopic.= " LIMIT 10"
        Einfache Sache: ich hole mir aus der tabelle alle topic_id`s. Um gleiche Einträge auszusortieren benutze ich DISTINCT. Funktioniert ohne Probleme.
        Gebe ich hinten nun noch ein WHERE Statement mit an, klappt gar nichts mehr.

        Das schaut dann so aus:

        PHP-Code:
        $query_getuniquetopic "SELECT DISTINCT topic_id as unique_topic_id FROM phpbb_posts";
        $query_getuniquetopic.= " WHERE forum_id != 21 ";
        $query_getuniquetopic.= " order by post_id DESC";
        $query_getuniquetopic.= " LIMIT 10"
        Anstatt nun den einen Eintrag, den die Where KLausel betrifft, auszulassen, bekomme ich irgendwelche älteren Einträge angezeigt. Woran liegt das?

        Nehm ich das Where wieder raus, passt die ganze Ausgabe... bis halt auf das, was raus soll.

        Jemand eine Idee?

        Kommentar

        Lädt...
        X