Toon posts:

[Mysql] Laatste reply in threads

Pagina: 1
Acties:

Verwijderd

Topicstarter
Hoi,

Ik ben bezig met een eigen forum te bouwen en ik heb een probleem om de laatste replies te laten zien van bepaalde geselecteerde threads.

Ik heb nu dit:

SELECT
id,
subject

FROM
forum

WHERE
thread_id IN (1,3,4,5)

GROUP BY
thread_id, id

ORDER BY
id desc;

Met deze query krijg ik dus alle posts van de threads met id 1,3,4,5 met de laatste telkens bovenaan. Is er een manier om met één query alleen maar de laatste post van die threads uit de database te halen?

Ik heb naar een oplossing gezocht hier en ook verschillende threads bekeken die over zo'n soort onderwerp gingen, maar ik ben niet tot een oplossing gekomen.

Alvast bedankt!

  • blackd
  • Registratie: Februari 2001
  • Niet online
Selecteer de threads die je wilt weten
selecteer daarvan de reactie ID's, haal daar de hoogste uit indien je autoincrement hebt, met behulp van MAX().
Zoiets zou toch moeten kunnen?

9000Wp o/w SolarEdge SE6K - Panasonic 5kW bi-bloc - gasloos sinds 17-7-2023


Verwijderd

Begreep je probleem eerst niet zo goed, denk dat ik het nu beter begrijp. Hoe ziet je db er precies uit?.... denk dat je met group by en having nog wel een eind komt.

Verwijderd

Topicstarter
Met behulp van die MAX() functie werkt het nog niet. Ik krijg nogsteeds de volgende output:

+---------+---------------------------+----------------+
| MAX(id) | MAX(subject) | MAX(thread_id) |
+---------+---------------------------+----------------+
| 17 | Re: Re: Re: Re: Re: TE | 1 |
| 14 | Re: Re: Re: Re: TEST1 | 1 |
| 13 | Re: TEST3 | 5 |
| 12 | Re: Re: Re: TEST1 | 1 |
| 11 | Re: TEST3 | 4 |
| 10 | Re: Re: TEST1 | 1 |
| 9 | Re: TEST1 | 1 |
| 6 | TEST3 | 5 |
| 5 | TEST3 | 4 |
| 4 | TEST3 | 3 |
| 1 | TEST1 | 1 |
+---------+---------------------------+----------------+

Dus alle replies per thread. Op de output heb ik geprobeerd MAX van alles te doen. Ik heb ook geprobeerd om het alleen van id te doen, zonder resultaat.

Verwijderd

Topicstarter
Mijn database ziet er zo uit:

| id
| forumtype
| topic
| thread_id
| views
| datum
| tijd
| userid
| subject
| body

Het topic atribuut is 1 wanneer het een topic is en 0 wanneer het een reply is. Op deze manier heb ik de topics en replies in één tabel kunnen verwerken.

Verwijderd

Kan je ergens een sql dump neer zetten (met data)? Sorry denk dat het niet hoeft

[ Voor 94% gewijzigd door Verwijderd op 14-01-2003 22:37 ]


Verwijderd

volgens mij kan je een max gebruiken op de datum en group by op thread_id dan moet je er wel zo'n beetje zijn

Verwijderd

Topicstarter
eh, dat is toch nergens voor nodig? De informatie over de tabel staat hierboven.

  • Sybr_E-N
  • Registratie: December 2001
  • Laatst online: 21-08 19:22
Je kunt ook gebruik maken van LIMIT. Waarbij je altijd een vast aantal reply's terug krijg.

Verwijderd

Nee ... sorry begreep dat overzicht even niet... maar probeer eens die max datum (zie dat je tijd en datum los hebt staan... lijkt met niet zo handig)

Verwijderd

nee limit kan niet.... hij wil namelijk van zowel thread_id 1, 3, 4 en 5 de laatste hebben... niet de laatste 5 (stel dat op 5 twee keer het laatst is gepost)

Verwijderd

Topicstarter
Volgens mij is dit de uiteindelijke goede query:

SELECT MAX(id), thread_id FROM buzzforum WHERE thread_id IN (1,3,4,5) GROUP BY thread_id ORDER BY id DESC;


Bedankt voor de hulp!

[ Voor 8% gewijzigd door Verwijderd op 14-01-2003 22:47 ]


  • TheDane
  • Registratie: Oktober 2000
  • Laatst online: 10:19

TheDane

1.618

ik had 'tzelfde probleem ... maar ik hou per forum en per topic wat redundante informatie bij, oa het ID van de laatste post, het ID van de bijbehorende user, etc
Pagina: 1