2009-12-26 2 views
1

피드 판독기와 마찬가지로 여러 개의 기사를 저장하고 있습니다. 각 문서는 소스 (피드)에 속하며 각 피드는 범주에 속할 수 있습니다. 내가하려는 일은 다음과 같습니다.SQLite 디자인 질문

  1. 특정 카테고리에 속하는 피드의 기사를 검색합니다.
  2. 기사를 그룹화하십시오. 하나의 시나리오는 날짜 (published_time) 일 것이므로 다음과 같은 그룹이 있습니다. (12.04.09 - 기사 3 개, 기사 17.04.09 - 기사 9 개 등)
  3. 각 그룹을 반복하고 각 기사를 표시하십시오. 의사 코드 :

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

    가 작동합니다 :

foreach (Group group in results) 
{ 
print(group.Name); 

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

나는 같은 간단한 일을 생각했다. 그런 다음 결과 행과 루프를 분할해야합니다 (group_concat (*) 함수가 없습니다).

결과를 그룹화하여 (2) 반복 할 수있는 방법을 혼동합니다 각 그룹을 통해 그룹 이름을 유지합니다. 나는 SQL 쿼리가 하나의 큰 테이블을 반환한다고 생각 했으므로 하나의 쿼리만으로이 작업을 수행하는 것이 불가능 해 보입니다.

이 질문은 DB 디자인 질문에 더 가깝습니다. 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

간단하고 효과적인 :) 감사합니다 –