2012-09-21 5 views
1

SQLite3의 각 트리에 대해 월에 피 시즌을 저장하려고합니다. 현재 나는 "월"이라는 필드를 가지고 있으며 그 필드에 달 이름을 저장합니다. 예를SQLite에서 다중 값 저장/쿼리하기

Tree Name  Month 

Tree1   Jan,Feb,Mar 
Tree2   Nov,Dec,Jan 
Tree3   Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec 
Tree4   Mar,Apr,Nov,Dec 
Tree5   Jan,Feb,Mar,Apr 

를 들어 나는이 보관하는 가장 좋은 방법이 있는지 확실하지 않습니다, 모든 추천 감사합니다.

두 번째로, 나는 한 달에 입력 한 쿼리를 수행해야하며 검색 기준과 일치하는 트리 이름을 반환해야합니다. 예를

위해 나는,

"Jan" 

결과가 트리 1, Tree2, Tree3해야합니다에 대한 Tree5

"Jan,Feb,Mar" 

결과가 트리 1, Tree3해야한다, Tree5

"Jan,Feb,Mar,Apr" 
를 검색하는 경우

결과는 Tree5 여야합니다.

"Sep,Oct,Nov,Dec" 

결과는 아무도 없을 것

어떤 SQL 쿼리 내가 위의 결과를 얻기 위해 사용해야합니까?

감사

+0

SQL 언어가 표준화 된 데이터베이스와 더 잘 작동하도록 설계되었습니다. Group_Concat이 도움이 될 수있는 내용에 대해서는 [이 SO 대답] (http://stackoverflow.com/questions/9797353/sqlite-group-concat-multiple-columns)을 확인하십시오. 도움이 될 수 있습니다. 당신은 필요하지만 올바른 길을 찾는 데 도움이 될 것입니다. 하지만 SQL은 일반적으로 이런 종류의 문자열 조작에는 적합하지 않습니다. – Yaroslav

답변

2

당신은 다음과 같은 방법으로 Group_concat를 사용할 수 있습니다

SELECT Group_concat(name) AS [tree name] 
FROM tree 
WHERE month LIKE '%Jan,Feb,Mar%' 

체크 아웃 내가 @Podiluska 제안을 추천 할 수 있도록 SQLFIDDLE

+0

감사합니다,이 작품 – chmod

+0

@chmod : 당신은 환영합니다 ... –

3

번이 보관하는 가장 좋은 방법이 아니다.

당신은

Tree1   Jan 
Tree1   Feb 
Tree1   Mar 
Tree2   Nov 
Tree2   Dec 
Tree2   Jan 
.... 

다음 수

select treename from TreeBlooming where month = 'jan' 

(혹은 숫자 12으로 개월 저장) 데이터를 정상화 및 행 당 하나의 월/트리를 저장해야합니다 및

select treename from TreeBlooming 
where month in ('jan','feb') 
group by treename 
having count(distinct month)=2 
+0

제안 해 주셔서 감사합니다. 그러나 MSAcces에서 가져온 데이터베이스의 방식을 실제로 바꿀 수는 없습니다 – chmod

+1

"이 방법을 저장하는 것이 가장 좋은 방법인지 확신 할 수 없습니다. 모든 권장 사항에 감사드립니다." 질문에 다소 흥미로운 요소가 있습니까? – podiluska