SQLite设计问题

时间:2009-12-26 13:27:42

标签: sql sqlite

与提要阅读器类似,我存储了一堆文章,每个文章都与一个来源(Feed)相关,每个Feed都属于一个类别。我想做的是:

  1. 检索属于特定类别的供稿的文章。
  2. 对文章进行分组。一个场景是按日期(published_time),所以我有组,例如:(12.04.09 - 3篇文章,17.04.09 - 9篇文章,依此类推)
  3. 遍历每个组并显示每篇文章。伪码:
  4. 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 个答案:

答案 0 :(得分: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