2014-04-21 40 views
0

我有一个包含博客文章的网站。帖子可以有一个或多个类别。 现在我想要一个查询,返回所有类别的列表,这些列表由博客文章日期排序。 我已经在SELECT查询中尝试了SELECT,但这不起作用... 我该如何做,并返回按日期排序的类别?按商品日期排序的退货类别

表博客:

|id------|title------------------|date------| 
|1  |Test title    |2014-05-05| 
|2  |Test title 2   |2014-04-01| 
|3  |Last test title  |2014-02-02| 
|4  |Another blog item  |2014-01-06| 

表类:

|id|category-----| 
|1 |computers | 
|2 |home   | 
|3 |work   | 

表blogs_categories:

|blog_id|category_id| 
|1  |1   | 
|2  |1   | 
|4  |2   | 

回答

0

用一个简单的加入,只选择类别不同的​​数据

SELECT DISTINCT c.* 
FROM categories c 
LEFT JOIN blogs_categories bc ON(c.id =bc.category_id) 
LEFT JOIN blogs b ON(b.id=bc.blog_id) 
ORDER BY b.date DESC 

Fiddle Demo

0
SELECT c.*, 
     b.`date` 
FROM categories as c 
LEFT JOIN blogs_categories as bc on bc.category_id=c.id 
LEFT JOIN (
    SELECT `id`, max(`date`) as `date` 
    FROM blogs 
    GROUP BY `id` 
) as b on b.`id`=bc.`blog_id` 
GROUP BY c.`id` 
ORDER BY b.`date` desc