我有兩個表:分層結果在MySQL
+------------------------------------------------------+
| HIERARCHICAL_RECORDS |
+----------------+--------------------+----------------+
| ORG_ID | NAME | VALUE |
+----------------+--------------------+----------------+
| 333 | CC | ... |
| 22 | MT | ... |
| 22 | TMP | ... |
| 333 | TMP | ... |
+------------------------------------------------------+
,第二個與[機構層次結構:
+---------------------------------+
| ORGANIZATION |
+----------------+----------------+
| ORG_ID | PARENT_ID |
+----------------+----------------+
| 1 | null |
| 22 | 1 |
| 333 | 22 |
+---------------------------------+
其表示關於UI參數值的層次結構:
Org ID# 1
|
|----- Org ID# 22
[MT -> value]
[TMP -> value]
|
|----- Org ID# 333
[CC -> value]
[MT -> shows value defined in parent #22]
[TMP -> redefined value]
這是事情:如果父母和孩子都定義了一些屬性值(例如TMP),我們總是應該返回到c重新定義一個孩子的價值。
所以,我想有一個查詢,通過給定的子ID(或可能設置所有的ID從子到根)將返回最後一級定義的記錄。
例如,對於上面的例子,如果我通過333(或一組1,22,333),我想有的結果:
+----------------+--------------------+----------------+
| ORG_ID | NAME | VALUE |
+----------------+--------------------+----------------+
| 333 | CC | ... |
| 22 | MT | ... |
| 333 | TMP | ... |
+------------------------------------------------------+
,其中來自子ORG#333 TMP的值會隱藏父ORG#22的一個。
所以,我需要以某種方式篩選父ORG的記錄,並只保留子ORG的實際記錄。同時,如果一個值不是在子級重新定義的,我們從它的父級取值(與在ORG#22定義的MT一樣,但不在ORG#333重新定義)。
我該怎麼做?
非常感謝!