PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Как да съхранявате и правите заявки към база данни с дървовидна структура

Във всяка база данни, ако всеки член на "дървото" има едни и същи свойства, най-добре е да използвате самореферентна таблица, особено ако всяко дърво има 1 и само 1 пряк родител.

Т.Е.

HR
------
ID
first_name
last_name
department_id
sal
boss_hr_id (referneces HR.ID)

Обикновено големият шеф ще има NULL boss_hr_id

За да направите заявка за такава структура, в postgres, можете да използвате CTEs („с рекурсивен“ израз)

За таблицата по-горе заявка като тази ще работи:

with recursive ret(id, first_name, last_name, dept_id,boss_hr_id) as
    (
      select * from hr
      where hr.id=**ID_OF_PERSON_YOU_ARE_QUERYING_STRUCTURE**
      union
      select hr.id, hr.first_name, hr.last_name,hr.dept_id,hr.boss_hr_id, lev+1 from hr
      inner join ret on ret.boss_hr_id=hr.hr_id
    ) 
    select * from ret
) 



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Създайте голямо цяло число от големия край на uuid в PostgreSQL

  2. Как да извлечете най-доброто от PostgreSQL регистрационните файлове

  3. Django get_or_create не успява да зададе поле, когато се използва с iexact

  4. Yii2:как да зададете множество схеми на база данни?

  5. Индексиране на база данни в PostgreSQL