I'm just curious to find out why you have used a mapping table between threads and topics? Seeing as its a 1-to-many relationship between topics and threads I would have thought you wouldn't need to model it the way you have. Just have a topic column in the thread table. A thread can ONLY be part of ONE topic...
You could change the last_updated field to a TIMESTAMP instead with default of CURRENT_TIMESTAMP. This way you don't have to manually update the last_updated.
If you need threads sorted by topic added then as a quick guess at an SQL statement I would say :
FROM tblTopics tblTo
JOIN tblTopicsThreadsLink tblTt ON tblTt.topicID=tblTo.topicID
WHERE tblTt.threadID=tblTh.threadID) as ordDate
FROM tblThreads tblTh
ORDER BY ordDate DESC