Вопрос дизайна SQLite - PullRequest
       8

Вопрос дизайна SQLite

1 голос
/ 26 декабря 2009

Как и в программе чтения каналов, я храню несколько статей, каждая из которых относится к источнику (каналу), и каждый канал может принадлежать к категории. То, что я пытаюсь сделать, это:

  1. Получить статьи каналов, которые относятся к определенной категории.
  2. Группировка статей. Один сценарий будет по дате (опубликовано_ время), поэтому у меня есть группы, например: (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 Ответ

1 голос
/ 26 декабря 2009
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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...