Toon posts:

[mysql] Laatste 5 berichten waarop gereageerd is *

Pagina: 1
Acties:

Verwijderd

Topicstarter
Waarschijnlijk snap ik het principe van distinct niet, maar ik wordt er nu onderhand gek van.

Ik heb onderstaande tabel met reakties :
reakties_id bigint Unique autoincr.
artikel_id int
user_id bigint
reaktie text
reakties_datum bigint

De tabel heeft verder een index of de artikel_id kolom en een op de reakties_datum.

Wat ik nu wil is de laatste 5 reakties van de verschillende artikelen.

De query die ik heb is :
select distinct(artikel_id) from reakties order by reakties_datum desc limit 5

Ik weet niet wat ie doet, maar ik krijg niet de 5 artikels waar het laatst op gereageerd heb.

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 19:24

gorgi_19

Kruimeltjes zijn weer op :9

Titlechange, je vorige zegt nogal weinig over de inhoud van je post

En misschien dat je ook wat hebt aan [rml][ SQL] Laatste reacties[/rml]

[ Voor 42% gewijzigd door gorgi_19 op 30-09-2004 08:31 ]

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • lier
  • Registratie: Januari 2004
  • Laatst online: 23:24

lier

MikroTik nerd

Waarom is je reakties_datum een veld van het type INT ???
Zou dit geen datetime veld moeten zijn ?

Eerst het probleem, dan de oplossing


  • pjvandesande
  • Registratie: Maart 2004
  • Laatst online: 21-05 14:59

pjvandesande

GC.Collect(head);

lier schreef op 30 september 2004 @ 09:04:
Waarom is je reakties_datum een veld van het type INT ???
Zou dit geen datetime veld moeten zijn ?
Timestamp ofzo, meybe ze eigen type gemaakt.

Maar als je met een date type werkt, kun je toch gewoon sorteren op datum en een limit van 5 megeven?

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 19:24

gorgi_19

Kruimeltjes zijn weer op :9

questa schreef op 30 september 2004 @ 09:15:
[...]


Timestamp ofzo, meybe ze eigen type gemaakt.

Maar als je met een date type werkt, kun je toch gewoon sorteren op datum en een limit van 5 megeven?
Dan heb je niet altijd 5 artikelen :)

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Verwijderd

Topicstarter
de datum wordt opgeslagen als timestamp

Verwijderd

Verwijderd schreef op 30 september 2004 @ 08:28:
....
Wat ik nu wil is de laatste 5 reakties van de verschillende artikelen.

...

Ik weet niet wat ie doet, maar ik krijg niet de 5 artikels waar het laatst op gereageerd heb.
Wat wil je precies? Per artikel de laatste 5 reacties of de laatste vijf reacties op alle artikelen?

Verwijderd

Topicstarter
Ik wil graag op mijn site een lijst met newsitems laten zien, waarop het laatste gereageerd is. Elk nieuwsitem mag maar één maar in de lijst staan.
Tweakers.net en Fokzine.net hebben net zo iets.

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 19:24

gorgi_19

Kruimeltjes zijn weer op :9

Verwijderd schreef op 30 september 2004 @ 09:29:
Ik wil graag op mijn site een lijst met newsitems laten zien, waarop het laatste gereageerd is. Elk nieuwsitem mag maar één maar in de lijst staan.
Tweakers.net en Fokzine.net hebben net zo iets.
Heb je nog wat gehad aan de eerdere link die ik heb gegeven? :)

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Verwijderd

ik zou de date gewoon opslaan als een waarde INT(8) en dan zoiets als "20040901" Daar kan je het makkelijkst op sorteren.

en persoonlijke zou ik van:

select distinct(artikel_id) from reakties order by reakties_datum desc limit 5

maken:

mysql_query("Select * FROM reakties ORDER BY reakties_datum DESC LIMIT 5");

en dan vervolgens met een while uitlezen!!

Groetjes Flopkip

Verwijderd

Topicstarter
daar heb ik gekeken en de query aangepast, maar nu krijg ik een group by error
de query die ik nu heb

SELECT Max( reakties.reakties_datum ) AS MaxOfPosted, news.topic, news.artikel_id
FROM news
INNER JOIN reakties ON news.artikel_id = reakties.artikel_id
GROUP BY news.topic, news.artikel_id
ORDER BY Max( reakties.reakties_datum ) DESC

in phpmyadmin geeft ie dan :
#1111 - Invalid use of group function

[ Voor 4% gewijzigd door Verwijderd op 30-09-2004 09:38 ]


Verwijderd

die while zou ik dan zo maken:

van de SELECT string een var " $query " maken en dan

while($var=mysql_fetch_array($query))
{

echo $var['Berciht'];
// hier dus alles neerzetten wat je wilt laten zien en daar kan je natuurlijk een
// tabel voor gebruiken

}

Verwijderd

Topicstarter
Volgens mij heb ik um nu :

SELECT Max( reakties.reakties_datum ) AS MaxOfPosted, news.topic, news.artikel_id
FROM news
INNER JOIN reakties ON news.artikel_id = reakties.artikel_id
GROUP BY news.topic, news.artikel_id
ORDER BY MaxOfPosted DESC

de order by stond verkeerd, die heb ik nu dus MaxOfPosted ipv Max(reakties.reakties_datum) gemaakt en nu krijg ik de juiste waardes :)
Pagina: 1