2009-12-26 196 views
1

与feed阅读器类似,我存储了一组文章,每篇文章都与一个源(feed)相关,每个feed可以属于一个类别。我想要做的是:SQLite设计问题

  1. 检索属于某个类别的供稿的文章。
  2. 将文章分组。一种情况是按日期(published_time),以便我拥有组,例如:(12.04.09 - 3篇文章,17.04.09 - 9篇文章等等)
  3. 循环遍历每个组并显示每篇文章。伪代码:
foreach (Group group in results) 
{ 
print(group.Name); 

foreach (Article article in g.Articles) 
{ 
    print(article.Title); 
    print(article.Content); 
} 
} 

我觉得喜欢简单的东西:

SELECT group_concat(item_id, '#') FROM items GROUP BY date(published_time) 

会工作。但然后我不得不分裂产生的行,并通过该循环(并没有group_concat(*)函数)

我很困惑,我会如何组合(2)结果,以便我可以迭代通过每一个,保存组名称。我认为SQL查询返回一个大表,因此,只用一个查询就可能完成这个工作。

我认为这是一个数据库设计问题,我也是SQLite的新手(SQL),所以我问你,大师,如何有效地完成这项工作?

回答

1
SELECT Title, Content, date(published_time) AS Date 
FROM items 
ORDER BY date(published_time); 

伪代码:

last = None 
for r in results: 
    if not last or r.Date != last.Date: 
    print "Group", r.Date 
    print r.Title, r.Content 
    last = r 
+0

简单,有效的:)谢谢 – 2009-12-26 15:05:22