Last month when I created a master-detail form, suddenly stared at the page and I was thinking about how can I expose total information of master-detail in this page so I found this idea "Tree preview" without change the structure of tables.
The first sample is showing to create the "Tree preview of Master-Detail" and the second about "Tree preview of Master-Detail-Detail".
Demo : Tree Preview
Insert into table:
This is the query of master-detail-detail
First sample:
Demo : Tree Preview
In this sample I use the "ROWNUM" that called "Virtual ID"
VID and ID.3
Second sample:
SELECT VALUE, VID, ID, NAME, (CASE WHEN FLAG_CTL = 1 THEN MAX (VID) OVER (PARTITION BY ID ORDER BY ID) ELSE NULL END) AS PARENT_VID FROM (SELECT VALUE, ROWNUM AS VID, ID, NAME, FLAG_CTL FROM (SELECT EMPNO || '-' || DEPTNO AS VALUE, DEPTNO AS ID, ENAME AS NAME, 1 AS FLAG_CTL FROM EMP UNION ALL SELECT 0 || '-' || DEPTNO AS VALUE, DEPTNO AS ID, DNAME AS NAME, NULL AS FLAG_CTL FROM DEPT))
Below code is in APEX:
select case when connect_by_isleaf = 1 then 0 when level = 1 then 1 else -1 end as status, level, "NAME" as title, null as icon, value, "NAME" as tooltip, null as link from "#OWNER#"."VIEW_TREE_MASTER_DETAIL" start with "PARENT_VID" is null connect by prior "VID" = "PARENT_VID" order siblings by VID
I use two "ID" fields. For each "Detail" you must add a new
"ID". For example "ID2"
It needs a create new table "COURSE".(this table uses only
for sample)
CREATE TABLE COURSE ( COURSENO NUMBER(6), NAME VARCHAR2(100 BYTE), DURATION NUMBER(3), EMPNO NUMBER(4) )
Insert into table:
COURSENO |
NAME
|
DURATION
|
EMPNO
|
100
|
Oracle APEX
|
80
|
7654
|
120
|
PL/SQL
|
40
|
7654
|
110
|
SQL
|
40
|
7654
|
130
|
Oracle
|
100
|
7900
|
This is the query of master-detail-detail
SELECT VALUE, VID, ID, ID2, NAME, (CASE WHEN FLAG_CTL = 1 THEN MAX (VID) OVER (PARTITION BY ID ORDER BY ID) WHEN FLAG_CTL = 2 THEN MAX (VID) OVER (PARTITION BY ID2 ORDER BY ID) ELSE NULL END)AS PARENT_VID FROM (SELECT VALUE, ROWNUM AS VID, ID, ID2, NAME, FLAG_CTL FROM (SELECT COURSENO || '-' || EMPNO AS VALUE, EMPNO AS ID, EMPNO AS ID2, NAME AS NAME, 2 AS FLAG_CTL FROM COURSE UNION ALL SELECT EMPNO || '-' || DEPTNO AS VALUE, DEPTNO AS ID, EMPNO AS ID2, ENAME AS NAME, 1 AS FLAG_CTL FROM EMP UNION ALL SELECT 0 || '-' || DEPTNO AS VALUE, DEPTNO AS ID, 0 AS ID2, DNAME AS NAME, NULL AS FLAG_CTL FROM DEPT))
Below code is in APEX:
select case when connect_by_isleaf = 1 then 0 when level = 1 then 1 else -1 end as status, level, "NAME" as title, null as icon, value, "NAME" as tooltip, null as link from "#OWNER#"."VIEW_TREE_MASTER_DETAIL_DETAIL" start with "PARENT_VID" is null connect by prior "VID" = "PARENT_VID" order siblings by VID
Hopefully it might be useful for you one day.
All suggestions are welcome!
All suggestions are welcome!
No comments :
Post a Comment