MySQL: Order By vor Group By
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
abfrage
anzeigen
chronik
code
dank
datum
folgende fehlermeldung
folgendes problem
gesamte abfrage
innere abfrage
letzten beitrags
limit
neusten themen
not
ordern
problem
schnelle antwort
stunden
tabelle
versuch
-
Hallo Leutz,
Ich hab nun 2 Stunden lang rumprobiert und nochmals 2 Stunden mich durchgelesen bei Google allerdings kommt bei mir nur noch mehr Verwirrung auf
Also ich habe folgendes Problem und zwar habe ich eine Tabelle (board_posts) wo die Beiträge von Usern (post_userid) und den dazugehörigen Themen(topic_id) drinstehen.
Nun will ich auf der Startseite die letzten 5 Beiträge in Abhängigkeit der Themen Anzeigen, da er aber lediglich den Order By Parameter nach Group By annimmt (sonst SQL-Error) listet er bei dieser Abfrage: mysql_query("SELECT * FROM `board_posts` GROUP BY `topic_id` ORDER BY `post_time` DESC LIMIT 5"); lediglich die 5 neusten Themen, sodass die Chronik nicht stimmt.
Ich hoffe ich konnte es etwas näher bringen und hoffe das ihr mir einen anstupser der zur Lösung führt geben könnt.
Gruß
Chris -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Hallo,
ich verstehe nicht ganz was Du machen willst.
Willst Du zu jedem Thema die letzten fünf Beiträge anzeigen oder die letzten fünf Beiträge, wobei jedes Thema nur einmal vertreten sein darf? -
Ich wusste es zu krass geschrieben
Die letzten 5 Beiträge wobei jedes Thema nur einmal angezeigt wird.
Gruß Chris -
So müsste es klappen:
SELECT e.* FROM topic_posts e WHERE (e.post_time,e.topic_id) IN ( SELECT MAX(t1.post_time) as max_time, t1.topic_id FROM board_posts t1 GROUP BY t1.topic_id ORDER BY MAX(t1.post_time) DESC LIMIT 5 ) ORDER BY e.post_time DESC
Beitrag zuletzt geändert: 13.3.2010 11:00:50 von franco-bez -
Danke für die schnelle Antwort, leider kommt dennoch folgende Fehlermeldung
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in functions.inc.php on line 7
Ich glaube aber auch das das SELECT e.* FROM topic_posts eher SELECT e.* FROM board_posts heißen muss da es keine tabelle namens topic_posts gibt... dennoch auch so leider ohne Erfolg....
Danke aber schon einmal an die VorPoster
Gruß
Christian -
Da hatte ich mich vertppt ... sorry
Versuch mal den inneren Select alleine
SELECT MAX(t1.post_time) as max_time, t1.topic_id FROM board_posts t1 GROUP BY t1.topic_id ORDER BY MAX(t1.post_time) DESC LIMIT 5
Da sollte eine liste der neuesten 5 topics_id und den zugehörigen letzten post_time geben.
vieleicht muss das LIMIT 5 auch nach aussen gesetzt werden.
(Oder du brichst einfach nach fünf Stück mit dem php das lesen ab)
Ich hoffe die Felder heißen post_time und topic_id ?
SELECT e.* FROM board_posts e WHERE (e.post_time,e.topic_id) IN ( SELECT MAX(t1.post_time) as max_time, t1.topic_id FROM board_posts t1 GROUP BY t1.topic_id ORDER BY MAX(t1.post_time) DESC ) ORDER BY e.post_time DESC LIMIT 5
-
Auch wenn die innere Abfrage nicht geht funktioniert dennoch die Gesamte Abfrage nun einwandfrei...
Ich bedanke mich viele male bei dir.
Gruß
Chris -
Kein Problem, gern geschehen :-)
Die innere Abfrage funktioniert dann schon, nur liefert sie natürlich nicht ALLE Daten die Du benötigst.
Es wird lediglich für jedes Topic die (Datum und)Uhrzeit des letzten Beitrags bestimmt.
Die äußere Abfrage ergänzt das dann um alle anderen Spalten ... -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage