我与这一个挣扎,即使有对堆栈溢出一些有点类似的问题,我无法找到合适的解决方案。我有三个表格:categories, topics
和posts
,我想加入它们并在categories
中显示每个类别以及来自topics
的最新主题的主题,其中包含发布内容以及最后发布的帖子从posts
表中发布的最新日期。多获取最新的日期参加
我顺利得到的一切,显示一个类似我想只是我不能从每个类别获得最新帖子记录。
这里的查询:
SELECT c.cat_id, c.cat_name, c.cat_description, t.topic_subject, t.topic_id, p.post_date FROM categories c
LEFT JOIN topics t ON c.cat_id = t.topic_cat
LEFT JOIN posts p ON p.post_topic = t.topic_id AND p.post_date = (SELECT MAX(post_date) as post_date FROM posts WHERE post_topic = t.topic_id)
GROUP BY c.cat_id ORDER BY UNIX_TIMESTAMP(post_date) DESC
我意识到它应该有东西WHERE
条款中做了topic_id
不是我要找的人。这样的其他人:
SELECT c.cat_id, c.cat_name, c.cat_description, t.topic_subject, t.topic_id, p.post_date FROM categories c
LEFT JOIN topics t ON c.cat_id = t.topic_cat AND t.topic_id = (SELECT post_topic FROM posts ORDER BY UNIX_TIMESTAMP(post_date) DESC LIMIT 1)
LEFT JOIN posts p ON p.post_topic = t.topic_id AND p.post_date = (SELECT MAX(post_date) as post_date FROM posts WHERE post_topic = t.topic_id)
GROUP BY c.cat_id ORDER BY UNIX_TIMESTAMP(post_date) DESC
显然只会显示其中最新发布的类别的正确帖子。如何获得所有类别的最新帖子?
主题表格是否具有字段post_date? – Thinhbk 2012-08-10 11:35:33
nope,仅邮政表。他们都通过他们的ID连接,如cat_id = topic_cat和topic_id = post_topic – NewInTheBusiness 2012-08-10 12:00:58