Рекурсивный просмотр MySql: это возможно? - PullRequest
0 голосов
/ 06 июня 2011

В моей базе данных MySql есть таблица со следующими столбцами:

- id
- parent_id
- visible

В основном, если у меня есть таблица , заполненная так:

    id     name      parent_id      visible
    ------ --------- -------------- -------
    1      Admin     0              1
    2      Review    0              0
    3      Archive   2              1
    4      Support   0              1

Хотя иерархия ...

1 - Admin
2 - Review
   3 - Archive
4 - Support

Я бы хотел, чтобы Archive (3) по существу наследовал атрибут «visible» из родительской строки - Review (2).Я хотел бы вернуть это в представлении следующим образом:

    id     name      parent_id      visible
    ------ --------- -------------- -------
    1      Admin     0              1
    2      Review    0              0
    3      Archive   2              0
    4      Support   0              1

Кто-нибудь знает, возможно ли это в MySql, не прибегая к хранимой процедуре?

Спасибо!

1 Ответ

0 голосов
/ 06 июня 2011

Вы можете сделать это в обычном запросе, используя оператор CASE для видимого столбца:

select a.id, a.name, a.parent_id,
       CASE WHEN a.parent_id = 0 
       then a.visible
       else b.visible
       end as visible
from myTable a
left join myTable b on a.parent_id = b.id

Вы также можете создать представление (тот же код):

create view myTableView as
select a.id, a.name, a.parent_id,
       CASE WHEN a.parent_id = 0 
       then a.visible
       else b.visible
       end as visible
from myTable a
left join myTable b on a.parent_id = b.id
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...