Seite 2 von 3

Verfasst: 06.03.2007 00:10
von kolja
nabend

"der" hat da nix verloren,
nur vergessen zu löschen

und das mit dem switch hab ich wiedereinmal verpeilt (tolles wort)

aber ich wusste gar nicht, das man datenbankabfragen so speziell machen kann!

aber was mir zum glück noch fehlt ist der topic_title

ich habs ja schon auf ein paar wegen versucht,
leider nicht in der gleichen sprache die die datenbank spricht...
"SQL Error "

vielleicht könntest du :roll:

kolja

Verfasst: 06.03.2007 07:19
von Dr.Death
Moin,

probier es mal hiermit:

Code: Alles auswählen

SELECT count( p.post_id ) AS post_count, p.topic_id, t.topic_title
        FROM `phpbb_posts` p, phpbb_topics t 
        WHERE `post_time` > unix_timestamp( ) -2419200
        AND p.topic_id = t.topic_id
        GROUP BY topic_id 
        ORDER BY post_count DESC 
        LIMIT 10

Verfasst: 06.03.2007 09:58
von kolja
guten morgen frühaufsteher

und danke für die hilfe

aber sagt, was hat es mit dem t. bzw p. auf sich ?

kolja

Verfasst: 06.03.2007 10:04
von Dr.Death
Hi,

wenn ich mehrere Tabellen miteinander verknüpfen will, so muss ich die Feld Namen eindeutig benennen.

Bei

Code: Alles auswählen

FROM `phpbb_posts` p, phpbb_topics t
gebe ich den Feldern eine ALIAS Bezeichnung mit ( oder auch Kurzschreibweise ).

Sonst würde die Abfrage so aussehen:

Code: Alles auswählen

SELECT count( p.post_id ) AS post_count, phpbb_posts.topic_id, phpbb_topics.topic_title 
        FROM `phpbb_posts`, phpbb_topics 
        WHERE `post_time` > unix_timestamp( ) -2419200 
        AND phpbb_posts.topic_id = phpbb_topics.topic_id 
        GROUP BY topic_id 
        ORDER BY post_count DESC 
        LIMIT 10
;-)

Verfasst: 06.03.2007 10:21
von kolja
und den könnte ich jetzt noch um die anzahl der antworten ergänzen:

Code: Alles auswählen

SELECT count( p.post_id ) AS post_count, phpbb_posts.topic_id, phpbb_topics.topic_title, phpbb_topics.topic_reply,
(ist bestimmt nicht richtig bezeichnet!)

kolja

Verfasst: 06.03.2007 10:45
von Dr.Death
?

Die Anzahl der Antworten ist doch post_count - 1 ;-)

Code: Alles auswählen

SELECT count( phpbb_posts.post_id ) AS post_count, phpbb_posts.topic_id, phpbb_topics.topic_title, phpbb_topics.topic_replies 
        FROM `phpbb_posts`, phpbb_topics 
        WHERE `post_time` > unix_timestamp( ) -2419200 
        AND phpbb_posts.topic_id = phpbb_topics.topic_id 
        GROUP BY topic_id 
        ORDER BY post_count DESC 
        LIMIT 10

Verfasst: 06.03.2007 11:50
von Miriam
Dr.Death hat geschrieben:Die Anzahl der Antworten ist doch post_count - 1 ;-)
Nicht (unbedingt) wenn ich ein Limit in der Zeit setze.....

Wenn Du nur die Antworten zählen möchtest -->

Code: Alles auswählen

SELECT count( p.post_id ) AS post_count, p.topic_id, t.topic_title
FROM phpbb_posts p, phpbb_topics t
WHERE post_time > unix_timestamp( ) -2419200
AND p.topic_id = t.topic_id
AND p.post_id <> t.topic_first_post_id
GROUP BY topic_id
ORDER BY post_count DESC

Verfasst: 06.03.2007 12:53
von Pyramide
Wie wärs mit phpbb_topics.topic_replies anstatt count(post_id)?

Verfasst: 06.03.2007 13:03
von kolja
Pyramide hat geschrieben:Wie wärs mit phpbb_topics.topic_replies anstatt count(post_id)?
ist dabei denn der 4 wochen faktor berücksichtigt ??

kolja

Verfasst: 06.03.2007 15:50
von easygo
Nö, damit wird eigentlich nur das Feld topic_replies ausgelesen..

Was Miriam hier ganz am Schluss gepostet hat, müsste schon so passen.
+ LIMIT 0,10 als Beispiel, um beim Zählerstand 0 eine Fehlermeldung zu vermeiden.
Was meiner Meinung nach noch fehlt, ist das Abklappern der FORUMS_TABLE

von wegen auth_view

Sonst werden ggf. auch private Themen und Team-Interna etc.
gelistet, was nicht für alle Augen gut sein soll :/ easy