귀하의 최근 의견을 읽은 후, 귀하가 원하는 것은 LOV가 아니라 목록 항목임을 이해합니다. 그것은 역시 LOV가 될 수 있지만. 첫 번째 목록 항목/lov에는 사용자가 선택한 모든 제품 만 포함됩니다 (예 : Prod1, Prod2, Prod3 ... 두 번째 목록 항목은 예제에서와 같이 쉼표로 구분 된 값에서 표로 변환 된 모든 버전을 내 예제와 같이 갖게됩니다. 내 이해에서 사용자는이 목록에서 제품 당 하나의 값만 선택할 수 있습니다. 단일 제품에는 많은 값이있을 수 있습니다 (예 : Prod1의 값은 1,2,3,4입니다.하지만 사용자는 하나만 선택해야합니다. 옳은? 따라서 쉼표 값을 표로 변환해야합니다. 선택 첫 번째 쿼리는 떨어지게 LK 이것이다 :
SELECT prod_id
FROM your_prod_table
/
id
--------
myProd1
myProd2
.....
PRODUCT_ID이 your_prod_table에 모든 버전을 선택해야하는 두 번째 쿼리 :
이
SELECT version FROM your_versions_table
WHERE prod_id IN (SELECT prod_id FROM your_prod_table)
/
Versions
--------
1,2,3,4 -- myProd1 values
a,b,c,d -- myProd2 values
.....
위의 제품, 예를 들어, 모든 버전을 반환됩니다 myProd1 등 모든 값 ...
쉼표로 변환하는 예를 사용하십시오. 테이블에 값. harcoded '1,2,3,4'를 테이블의 값 열로 바꿉니다. 이중을 테이블 이름으로 바꾸십시오.
단일 쿼리와 단일 결과로 제품과 버전이 필요한 경우 두 테이블을 모두 조인/외부 조인 (왼쪽, 오른쪽 조인)하면됩니다. 이 경우
SELECT p.prod_id, v.version
FROM your_prod_table p
, your_versions_table v
WHERE p.prod_id = v.prod_id
/
당신은 출력에 떨어지게 LK이 얻을 것이다 : 당신이 위의 질의에서 테이블에 쉼표를 변환하면
id | Values
------------------
myProd1 | 1,2,3,4
myProd2 | a,b,c,d
는 당신이 얻을 것이다 - 하나 개의 목록 또는 LOV의 모든 :
id | Values
------------------
myProd1 | 1
myProd1 | 2
myProd1 | 3
myProd1 | 4
myProd2 | a
myProd2 | b
myProd2 | c
myProd2 | d
이 정보가 도움이되기를 바랍니다. APEX에서 사용 가능한 경우 LOV 또는 목록 값을 사용할 수도 있습니다. 버전에 대한 다른 제품에 대한 두 가지 값 목록이 나에게 더 적합합니다. 목록 항목의 경우 위와 같이 두 개의 별도 쿼리가 필요하며 값/버전에 대해서만 테이블 변환에 쉼표를 사용하는 것이 더 쉽습니다. 그러나 당신에게 달렸습니다.
나타난 예에
쉼표 :
-- Comma to table - regexp_count --
SELECT trim(regexp_substr('1,2,3,4', '[^,]+', 1, LEVEL)) str_2_tab
FROM dual
CONNECT BY LEVEL <= regexp_count('1,2,3,4', ',')+1
/
-- Comma to table - Length -
SELECT trim(regexp_substr('1,2,3,4', '[^,]+', 1, LEVEL)) token
FROM dual
CONNECT BY LEVEL <= length('1,2,3,4') - length(REPLACE('1,2,3,4', ',', ''))+1
/
-- Comma to table - instr --
SELECT trim(regexp_substr('1,2,3,4', '[^,]+', 1, LEVEL)) str_2_tab
FROM dual
CONNECT BY LEVEL <= instr('1,2,3,4', ',', 1, LEVEL - 1)
/
상기와 동일한 모두의 출력 :
STR_2_TAB
----------
1
2
3
4
쉼표 테이블 - PL/SQL-APEX 예. LOV를 위해서는 PL/SQL이 아닌 SQL이 필요합니다.
DECLARE
v_array apex_application_global.vc_arr2;
v_string varchar2(2000);
BEGIN
-- Convert delimited string to array
v_array:= apex_util.string_to_table('alpha,beta,gamma,delta', ',');
FOR i in 1..v_array.count LOOP
dbms_output.put_line('Array: '||v_array(i));
END LOOP;
-- Convert array to delimited string
v_string:= apex_util.table_to_string(v_array,'|');
dbms_output.put_line('String: '||v_string);
END;
/
샘플 데이터 및/또는 원하는 결과를 입력하십시오. 둘 다 더 낫다. 당신이 찾고있는 것을 이해하는 것은 너무 어렵습니다. – Art
@Art는 샘플 데이터와 원하는 출력을 추가하여 조언을 제공해 주므로 도움을 주시면 대단히 감사하겠습니다. –
죄송합니다. 아직도 무엇을 찾고 계신지 이해하지 못합니다. 출력을 테이블 형식으로 둡니다 (예 : 열, 값 ... ctrl + K를 사용하여 코드 서식을 지정하십시오. – Art