Given your schema you should delete the 'topic_date' row and may be also 'topic_com', which I suppose hold the number of comments on a given topic (that info is already on the tables, just COUNT(*) it) and 'topic_by'.
I think there's at least a post row for each topic row (the topic's subject on the topic
table and the topic's content on the post
table) so just JOINing should
work, since there is no topic without a post (LEFT JOIN) neither a post without a topic it belongs to (RIGHT JOIN).
I sincerely don't know why it behaves this way.