postgres는 재귀 뷰를 만듭니다.

  • 재귀 함수: 모든 상속 관계의 id를 새 숫자 필드에 넣습니다(현재 요소 id+부모 id+부모의 부모 id+…)
CREATE OR REPLACE RECURSIVE VIEW VW_BUSINESS_CAPABILITY_MODEL_HIERARCHY (relation_id, sub_id, bcm_id, bcm_name, bcm_type, path) AS
	SELECT sbcm.id,
		sbcm2.id AS sub_id,
		sbcm2.bcm_id,
		sbcm2.bcm_name,
		sbcm2.bcm_type,
		ARRAY [cast(sbcm2.id as character varying)]
		FROM solaris_business_capability_model sbcm
		LEFT JOIN solaris_business_capability_model sbcm2 ON sbcm.id = sbcm2.parent_id
		WHERE sbcm.parent_id is null AND sbcm.bcm_industry_id = 'I_CROSS'
	UNION
		SELECT vw.sub_id as id,
		sbcm3.id as sub_id,
		sbcm3.bcm_id,
		sbcm3.bcm_name,
		sbcm3.bcm_type,
		vw.path || cast(sbcm3.id as character varying)
		FROM vw_business_capability_model_hierarchy vw
		JOIN solaris_business_capability_model sub ON sbcm3.parent_id = vw.sub_id
  • 문자열 필드를 배열 유형의 새 필드 경로 에 넣습니다.
    • ARRAY [cast(sbcm2.id를 다양한 문자로)]
  • 새 배열 필드는 다음 위치에 문자열 값 요소를 추가합니다.
    • vw.경로 || 캐스트(sbcm3.id 문자가 다양함)

Supongo que te gusta

Origin blog.csdn.net/lanxing_huangyao/article/details/127568759
Recomendado
Clasificación