Dit is een query die een lijst met topics laat zien in een bepaald board.
De volgende data wordt opgehaald, van boven naar beneden:
-Topic ID, voor het linken naar het topic
-Topic title, voor het weergeven van de titel
-De username van de gebruiker van de 1e post.
-De user-id van de gebruiker van de 1e post.
-De username van de gebruiker van de laatste reactie.
-De user-id van de gebruiker van de laatste reactie
-De tijd van de laatste reactie
-Het aantal reacties in dat topic
Tenminste, dat hoort de query te doen. Dat doet-ie echter niet, want MySQL ondersteund geen LAST en FIRST.
Ik weet dat je gewoon embed queries kan gebruiken, maar dat vind ik slordig; Er is vast wel een betere methode.
SELECT
topic.id AS id,
topic.title AS title,
FIRST(user.nickname) AS username,
FIRST(user.id) AS user_id,
LAST(user.nickname) AS lastreplyusername,
LAST(user.id) AS lastreplyuser_id,
UNIX_TIMESTAMP(LAST(post.time)) AS time,
COUNT(1) AS posts
FROM
posts AS post
JOIN
users AS user
ON user.id = post.user_id
JOIN
topics AS topic
ON post.topic_id = topic.id
WHERE
topic.board_id = $boardid
GROUP BY topic.id
ORDER BY post.time DESC
LIMIT 0 , 50
Oftewel, wat is een alternatief voor LAST() en FIRST() in MySQL?