SQL volgorde topics en reacties

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Koen Bokern

Koen Bokern

07/08/2009 00:51:00
Quote Anchor link
Hallo allemaal :)

Ik heb nog een SQL vraagje. Ik heb hiervoor maar een nieuw topic aangemaakt, omdat het toch anders is dan mijn vorige topic over SQL ORDER BY.

Het zit zo; Ik heb drie tabellen: topics, replys en subcats. Ik selecteer de topics, dit gaat prima. Alleen wil ik wel de juiste volgorde hebben.

De 'bijdragen' met de laatste datum moeten eerst. Dus als als laatste een reactie is geplaatst, moet het topic met deze reactie als eerste komen.

Echter heb ik nu al van alles geprobeerd. Heel veel verschillende dingen met ORDER BY. De SQL ziet op dit moment er zo uit:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
SELECT DISTINCT(topics.topicsid) as tid,
topics.sid as sid,
topics.subject as sj,  
topics.date as dt,
topics.uid as uid,
topics.del as deleted,
subcats.subcatname as scn,
subcats.subcaticon as icon,
subcats.allow_gid
FROM subcats
LEFT JOIN topics
ON subcats.subcatid = topics.sid
LEFT JOIN replys
ON replys.tid = topics.topicsid

ORDER BY replys.replyid DESC, topics.topicsid DESC LIMIT 15


DISTINCT heb ik overigens gebruikt omdat er anders per reply een row wordt geselecteerd, en niet per topic.
Ik ben nu al uren hiermee wezen experimenteren, maar ik kom er echt niet uit.

Overigens komen de topics met de reacties wel boven topics zonder reacties.
Gewijzigd op 01/01/1970 01:00:00 door Koen Bokern
 
PHP hulp

PHP hulp

22/12/2024 20:51:21
 
Koen Bokern

Koen Bokern

08/08/2009 03:05:00
Quote Anchor link
Het probleem is inmiddels opgelost met hulp van een vriend.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
SELECT DISTINCT(topics.topicsid) as tid,
MAX(replys.replyid) as sortkey,
topics.sid as sid,
topics.subject as sj,
topics.date as dt,
topics.uid as uid,
topics.del as deleted,
subcats.subcatname as scn,
subcats.subcaticon as icon,
subcats.allow_gid
FROM subcats
LEFT JOIN topics
ON subcats.subcatid = topics.sid
LEFT JOIN replys
ON replys.tid = topics.topicsid
GROUP BY topics.topicsid ORDER BY sortkey DESC LIMIT 15
 
Joren de Wit

Joren de Wit

08/08/2009 11:28:00
Quote Anchor link
Oei, dat is geen correcte oplossing (al lijkt MySQL misschien correcte resultaten terug te geven).

De GROUP BY die je gebruikt klopt namelijk niet, je hoort immers te groeperen op alle kolommen uit de SELECT die niet in een aggregate functie (MAX in jouw geval) voorkomen.

Lees ook deze handleiding eens: Het juiste gebruik van GROUP BY.
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.