Collection에 관해 질문 드립니다.
-
?
데이터의 수를 읽어오려한다는 것이 어떤 작업인지요? 예제가 가능하다면 예제를 같이 올려주시기를 부탁드립니다.테이블 생성, 자료 입력, 원하는 값을 알려주세요.
-
?
collection 타입에 대하여 개수를 알수 있는 방법은 질의로 지원되지는 않습니다. 다만 set derived table 을 이용하여 count(*) 하는 방법은 있습니다. 즉, collection 안의 element에 대하여 가상의 테이블을 만들고 그 테이블의 개수를 세는 방법입니다. 문제는 이렇게 하게되면 몇가지 제약이 있습니다.
1. 하나의 레코드가 collection 의 element 개수만큼 여러개의 레코드로 늘어납니다. 이때 원래 하나의 레코드임을 구분할 수 있는 적정 컬럼이 있어야 합니다. PK가 있으면 제일 좋습니다. 그렇지 않다면 count(*)를 할때 group 대상을 지정할 수 없을 것입니다.
2. 다른 관계형 데이터베이스에서 이야기하는 인라인뷰와 비슷해집니다. 그리고 그 개수를 세는 것이기 때문에 성능은 좋지 않을 수 있습니다.아래는 간단한 예입니다.
create class t ( i int primary key, c set(int));
insert into t values(1, {1,2,3})
insert into t values(2, {1,2})select i, t1 from t, table(c) as v(t1) --> 이 결과를 보면 set derived table 에 대하여 이해가 될 것입니다.
i t1
==========================
1 1
1 2
1 3
2 1
2 2
5 rows selected.다음은 말씀하신 결과입니다.
select i, count(t1) from t, table(c) as v(t1) group by i
i count(t1)
==========================
1 3
2 2
2 rows selected.