Hi,
hier das SQL Statement, habs mal auf Basis eines Forums gemacht, dh. es gibt Boards, Threads und Posts. Dieses Query sollte eine Liste über alle in einem Thread befindlichen Posts zeigen. Die sortierung erfolgt über posts.posy und die einrückung über posts.posx (damit spart man rekursion):
SELECT
posts.id,
posts.posx,
posts.posy,
posts.topic,
posts.time,
users.username,
IF(NOT NULL postviews.time, postviews.time, 0) as viewed
FROM
posts
LEFT JOIN
users
ON posts.username=users.username
LEFT JOIN
postviews
ON posts.id=postviews.postid
AND postviews.username='$username'
WHERE
posts.boardid='$boardid'
AND posts.threadid='$threadid'
ORDER BY
posts.posy ASC,
posts.time ASC;
Passt doch so, oder?
Sollte schneller laufen als wenn ich da etwas mache wie:
(IF(posts.postid<60, postviews.mask60 & POW(2,postid)=POW(2,postid), IF(posts.postid<120, postviews.mask120 & POW(2,postid-60)=POW(2,postid-60), postviews.mask180 & POW(2,postid-120)=POW(2,postid-120)))) as readed
Wobei hier in der postviews-table drei felder sind mit jeweils 60 Zeichen mit 1 oder 0 (True | False) und das mir sogar noch die max. anzahl an posts / thread auf 180 beschränkt.
Oder was denkt ihr?! :)
Gruss
Stefan