За последние 24 часа нас посетили 21714 программистов и 1689 роботов. Сейчас ищут 1974 программиста ...

Выборка всех родительских записей

Тема в разделе "MySQL", создана пользователем DiL, 5 фев 2008.

  1. DiL

    DiL Активный пользователь

    С нами с:
    5 фев 2008
    Сообщения:
    6
    Симпатии:
    0
    Есть подобная структура групп:
    Код (Text):
    1. Работники/
    2.     IT/
    3.         Исполнители/    
    4.             Программисты
    5.             Администраторы
    6.     Менеджеры/
    В базе реализовано как:
    Код (Text):
    1.  
    2. | group_id | group_parent_id | group_name   | group_description |
    3.       1           null          Работники           null
    4.       2            1               IT               null
    5.       3            2           Исполнители          null
    6.       4          3           Программисты         null
    7.       5            3          Администраторы        null
    8.       6            2            Менеджеры           null
    Можно ли одним запросом выбрать записи всех наименований групп (в данном случае три: Работники/IT/Исполнители), которым принадлежит группа "Администраторы"?

    Единственное до чего додумался, рекурсивно делать по запросу на получение родительской группы: т.е. для "администраторов":
    1) Сделал запрос
    2) Узнал, что у них есть родительская группа (Исполнители)
    3) Сделал запрос для получения информации о группе "Исполнители", если нашёл у неё наименование родительской группы, значит снова запрос на получение информации о родителе...

    и т.д. пока у конечной группы group_parent_id не будет равно null.

    Огромный минус, таким образом количество запросов будет равно глубине вложенности группы, для которой нужно получить карту родителей.
     
  2. armadillo

    armadillo Активный пользователь

    С нами с:
    6 апр 2007
    Сообщения:
    2.380
    Симпатии:
    0
    Адрес:
    Russia, Moscow
  3. DiL

    DiL Активный пользователь

    С нами с:
    5 фев 2008
    Сообщения:
    6
    Симпатии:
    0
    То, что нужно. Спасибо.