2014-11-24 5 views
0

sqlite가 열 이름으로 구문에있을 때.구문의 sqlite 열로

테이블.

_id seq(text) name(text) 
1  2   jone 
2  3   nike 
3  4   sara 

b 테이블.

_id seqs(text) 
1 1,2,3,4 << comma text 

여기에 sql이 있습니다.

select group_concat(name) from a where seq in (select seqs from b where _id = '1') 

또는

select group_concat(name) from a as t1 left join 
(select seqs from b where _id = '1') t2 on t1.seq in (t2.seqs) 

나는 아래의 결과를 기대합니다. (!!! 나는 원인이 원하는!)

result 
jone,nike,sara 

하지만,

query result 
(blank) 

을 내가 원하는 결과를하지 않는 이유는 무엇입니까?

내가 원하는 결과를 얻으려면 어떻게해야합니까? 당신은 in를 사용하여 쉼표로 구분 된 문자열을 검색 할 수 없습니다

ex) jone,nike,sara 

답변

1

(물론, 당신은 동적 SQL을 사용하는 경우). 당신은 like를 사용하여 수행 할 수 있습니다

select group_concat(name) 
from a 
where exists (select 1 from b where b._id = 1 and ',' || b.seqs || ',' like '%,' || a.seq || ',%') 

을하지만 문자열 물건의 목록을 저장 할 수 없습니다. SQL은 목록을 저장하는이 훌륭한 데이터 구조를 가지고 있습니다. 사실, 전체 언어가 그 주위에 만들어졌습니다. 이것을 테이블이라 부릅니다. 정수 값을 문자열에 채우기보다는 값 당 하나의 행을 갖는 접합 테이블을 사용해야합니다.