- Topics
+ topicID
+ forumID (Topics vallen onder een bepaald forum)
+ firstPost (Ieder topic begint met 1 post, hiervan gebruik ik dus de subject
- Users
+ userID
+ naam
- Posts
+ postID
+ userID (Om een post aan een user te koppelen)
+ topicID (Een post valt uiteraard binnen een topic)
+ subject (Full-text)
+ content (Full-text)
+ datetime
De Query;
SELECT p.postID, p.topicID, u.userID, u.name, DATE_FORMAT( p.datetime, '%e %M %Y, %H:%i' ) AS newDatetime, (
SELECT subject
FROM icey_posts
WHERE postID = t.firstPost
) AS subject,
MATCH (
subject, content
)
AGAINST (
'hallo'
IN BOOLEAN
MODE
) AS score, sum( t.firstPost ) AS test
FROM icey_posts AS p, icey_topics AS t, icey_users AS u
WHERE MATCH (
subject, content
)
AGAINST (
'hallo'
IN BOOLEAN
MODE
)
AND p.topicID = t.topicID
AND p.userID = u.userID
GROUP BY t.firstPost
ORDER BY score DESC
Die sum( t.firstPost ) en GROUP BY gebruik ik omdat ik alle posts die gevonden worden binnen 1 topic bij elkaar wil hebben. Die subquery gebruik ik voor het ophalen van een subject.
Kan dit efficienter/sneller? Is het ook mogelijk om de scores van alle losse posts binnen 1 topic bij elkaar op te tellen?