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
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
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