У меня есть этот бизнес стол
ref_ID name parent_id
-----------------------------
ABC-0001 Amb NULL
PQR-899 boss NULL
tgv-632 pick NULL
Я хочу обновить parent_id
, который хранится в другой таблице parent_customer
.
Таблица
parent_customer
содержит иерархию данных, в которой, когда оба значения ref_id
и parent_id
одинаковы, это означает, что он является родителем всей иерархии.
Например:
4 PQR-899 PQR-899 this is ultimate parent of hierarchy
parent_customer
ID ref_id parent_id
---------------------------
1 ABC-0001 opr-656
2 opr-656 ttK-668
3 ttK-668 ttK-668
4 PQR-899 PQR-899
5 kkk-565 AJY-567
6 AJY-567 UXO-989
7 UXO-989 tgv-632
8 tgv-632 mnb-784
9 mnb-784 qwe-525
10 qwe-525 qwe-525
match_table_CM
:
id main_id
--------------
1 opr-656
2 PQR-899
3 tgv-632
4 mnb-784
Сначала необходимо сопоставить бизнес-таблицу ref_id
с parent_customer
ref_id
, получить parent_id
и проверить, находится ли этот родительский идентификатор в match_table_CM
(main_id
), а затем обновить его с помощью бизнес стол parent_id
. В противном случае найдите следующую родительскую проверку с основной таблицей. Если все не найдено, обновите его, указав последний родительский идентификатор.
Например: давайте возьмем ABC-0001
из бизнес-таблицы, его parent_id
равно NULL; проверьте с помощью parent_customer
столбца таблицы ref_id
, найдите первую запись с помощью
parent_id = opr-656
, затем проверьте, существует ли этот идентификатор в таблице match_table_CM
(1 opr-656
) - да - затем обновите бизнес-таблицу (parent_id
)
в противном случае проверьте соответствие следующей иерархии parent_customer parent_id ttK-668
проверяйте с помощью match_table ... пока не достигнете вершины (выйдите, когда будет найдено 1-е совпадение, и перейдите к следующему идентификатору из бизнес-таблицы)