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

Родителско дете mysql

РЕДАКТИРАНЕ

работна проба, адресираща бележката на Гордън

Заявка за изчисляване на пътя на възела, тъй като сте фиксирали максималната дълбочина на дървото, и подредете по него.

SQL Fiddle

Настройка на схемата на MySQL 5.5.30 :

създайте таблица mytable(id int, parent_id int, name varchar(100));вмъкнете mytable(id, parent_id, name)values ​​(1, null, 'Home'), (2, null, 'Services '),(3, 2, 'Печене'), (4, 3, 'Торти'), (5, 3, 'Хляб'), (6, 5, 'Плосък хляб'), (7, 1, ' Нещо'); 

Запитване 1 :

изберете t0.*, concat( case coalesce(t4.Parent_ID, 0) когато е 0, след това '' else concat(cast(t4.Parent_ID като char), '\\') end, case coalesce(t3 .Parent_ID, 0), когато 0, тогава '' else concat(cast(t3.Parent_ID като char), '\\') край, case coalesce(t2.Parent_ID, 0), когато 0, тогава '' else concat(cast(t2. Parent_ID като char), '\\') край, case coalesce(t1.Parent_ID, 0), когато 0, след това '' else concat(cast(t1.Parent_ID като char), '\\') край, case coalesce(t0. Parent_ID, 0) когато 0 след това '' else concat(cast(t0.Parent_ID като char), '\\') end, cast(t0.id като char) ) като път от моята таблица t0 наляво присъедини към mytable t1 на t0.Parent_ID =t1.Id left join mytable t2 на t1.Parent_ID =t2.Id left join mytable t3 on t2.Parent_ID =t3.Id left join mytable t4 on t3.Parent_ID =t4.Idorder by concat( case coalesce(t4.Parent_ID, 0). ) когато 0, тогава '' else concat(cast(t4.Parent_ ID като char), '\\') край, case coalesce(t3.Parent_ID, 0), когато 0, след това '' else concat(cast(t3.Parent_ID като char), '\\') край, case coalesce(t2. Parent_ID, 0), когато 0, тогава '' else concat(cast(t2.Parent_ID като char), '\\') край, case coalesce(t1.Parent_ID, 0), когато 0, тогава '' else concat(cast(t1.Parent_ID като char), '\\') край, case coalesce(t0.Parent_ID, 0) когато 0 след това '' else concat(cast(t0.Parent_ID като char), '\\') end, cast(t0.id като char) ) 

Резултати :

<предварителен код>| ID | PARENT_ID | ИМЕ | ПЪТ |---------------------------------------| 1 | (нула) | Начало | 1 || 7 | 1 | Нещо | 1\7 || 2 | (нула) | Услуги | 2 || 3 | 2 | Печене | 2\3 || 4 | 3 | Торти | 2\3\4 || 5 | 3 | Хляб | 2\3\5 || 6 | 5 | Плосък хляб | 2\3\5\6 |

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. mysql група, като имате мин

  2. актуализира колоната на таблицата след вмъкване на нов запис с помощта на MySQL тригери

  3. PDO + MySQL и счупено UTF-8 кодиране

  4. Laravel група по дата

  5. Прикачване на съществуваща база данни с MySQL