Avatar billede showsource Seniormester
30. marts 2006 - 13:15 Der er 8 kommentarer og
1 løsning

Vis nyeste med GROUP BY

Prøver at trække tekst ud fra en tabel, "kommentarer", med GROUP BY

$comment = mysql_query("SELECT `artikler`.`id`, LEFT(kommentarer.kommentar, 40) as `text` FROM `artikler`, `kommentarer` WHERE `artikler`.`id` = `kommentarer`.`id_ref` GROUP BY `kommentarer`.`id_ref` ORDER BY `kommentarer`.`dato` DESC LIMIT 0, 5") or die (mysql_error());

Men det er den første kommentar som der vises tekst fra.
Hvordan skal den ellers laves?
Avatar billede eagleeye Praktikant
30. marts 2006 - 15:11 #1
Hvad skal den hente ud, den nyest kommentar til hver artikel?
Avatar billede showsource Seniormester
30. marts 2006 - 15:20 #2
nemmerlig!
Avatar billede eagleeye Praktikant
30. marts 2006 - 16:49 #3
ok umiddelbart er det ikke muligt se:
http://www.eksperten.dk/spm/621489
Avatar billede eagleeye Praktikant
30. marts 2006 - 17:29 #4
hvilken version af mysql bruger du?
Avatar billede eagleeye Praktikant
30. marts 2006 - 18:37 #5
Hvis du har mysql 5 og du har en kolonne id i kommentar som er auto_increment, så kan du måske lave den i stil med:

SELECT tk.id_ref, LEFT(tk.kommentar, 40) as `text` FROM kommentarer tk INNER JOIN (SELECT artikler.id, MAX(`kommentarer`.`id`) as kid FROM `artikler`, `kommentarer` WHERE `artikler`.`id` = `kommentarer`.`id_ref` GROUP BY artikler.id) as max_ids ON tk.id = max_ids.kid ORDER BY tk.dato DESC LIMIT 0, 5
Avatar billede showsource Seniormester
31. marts 2006 - 13:08 #6
kanont, eagleeye!!!
Hvad med et svar!
Bruger iøvrigt ver. 4.1.11 ???
Avatar billede showsource Seniormester
31. marts 2006 - 13:09 #7
Og en anden dag må jeg så lige kikke på hvad koden egentlig dækker over! :O)
Men den virker.
Avatar billede eagleeye Praktikant
31. marts 2006 - 14:12 #8
En kort gennemgang.

Den finder id'et for de nyeste kommentarer i din inderste SQL sætning (SELECT artikler.id, MAX(`kommentarer`.`id`) as kid FROM `artikler`, `kommentarer` WHERE `artikler`.`id` = `kommentarer`.`id_ref` GROUP BY artikler.id)

de ID'er bliver JOIN'et på kommentarer tabelen for at kunne trække teskten i kolonnen kommentar ud.


>> Bruger iøvrigt ver. 4.1.11 ???
Ok sql sætnigen bruger sub-selects og jeg mente det første var muligt fra version 5 men det er nok i version 4 eller 4.1 det er kommet med så :)


Spørgsmålet er om du ikke også kan rette det til denne da artikel id'et jo er i kommentarer tabellen kolonne id_ref, du kan evt. prøve:

SELECT tk.id_ref, LEFT(tk.kommentar, 40) as `text` FROM kommentarer tk INNER JOIN (SELECT MAX(`kommentarer`.`id`) as kid FROM `kommentarer` GROUP BY kommentarer.id_ref) as max_ids ON tk.id = max_ids.kid ORDER BY tk.dato DESC LIMIT 0, 5
Avatar billede showsource Seniormester
31. marts 2006 - 14:56 #9
Jow, din sidste virker også!
Takker mange gange!!!
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester