12. april 2003 - 16:50Der er
14 kommentarer og 1 løsning
mySQL
Jeg har denne mySQL foresp.: $mysql2 = mysql_query("SELECT traad_id FROM forum_indlaeg WHERE forum_id = '$row[id]' ORDER BY dato DESC LIMIT 0,3");
Det jeg vil, er at den skal finde de tre nyeste rækker i tabellen "forum_indlaeg" (udfra dato). En af kolonnerne i tabellen hedder traad_id, og indeholder ID'et på den tråd som forum-indlæget er skrevet til.
Hvis vi så forestiller os, at to af de tre nyeste indlæg er skrevet til den samme forum-tråd, så bliver det samme forum-indlæg printet to gange.. Det er så dette jeg vil forhændre!..
Hvordan kan jeg lave sådan, at den springer rækken over, hvis der er før er blevet printet en række med det "forum_traad" ID?
Jeg håber I forstår hvad mit problem er, ellers så må I lige sige til!
$mysql2 = mysql_query("SELECT traad_id,max(primaryid) as sortid FROM forum_indlaeg WHERE forum_id = '$row[id]' GROUP BY traad_id ORDER BY sortid DESC LIMIT 0,3");
Godt det der sker er at databasen løber kronologisk igennem tabellen via enten index eller direkte i tabellen, og group by bliver kørt før order by(dvs denne sortering sker helt til sidst). Selv om vi samler flere rækker kan vi stadig kun have en værdi i hvert felt, og da den løb kronologisk igennem gemmer den den mindste værdi. Vi har dog brug for de største værdier da vi vil have den dato DESC, derfor bruger vi MAX for at få den højeste værdi!
Hmmm... Håber det var svar nok! ;)
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.