kostenloser Webspace werbefrei: lima-city


MySQL: Order By vor Group By

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    ghostrider

    Kostenloser Webspace von ghostrider

    ghostrider hat kostenlosen Webspace.

    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
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. 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?
  4. Autor dieses Themas

    ghostrider

    Kostenloser Webspace von ghostrider

    ghostrider hat kostenlosen Webspace.

    Ich wusste es zu krass geschrieben ;-)


    Die letzten 5 Beiträge wobei jedes Thema nur einmal angezeigt wird.

    Gruß Chris
  5. 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
  6. Autor dieses Themas

    ghostrider

    Kostenloser Webspace von ghostrider

    ghostrider hat kostenlosen Webspace.

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


  8. Autor dieses Themas

    ghostrider

    Kostenloser Webspace von ghostrider

    ghostrider hat kostenlosen Webspace.

    Auch wenn die innere Abfrage nicht geht funktioniert dennoch die Gesamte Abfrage nun einwandfrei...

    Ich bedanke mich viele male bei dir.

    Gruß
    Chris
  9. 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 ...
  10. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!