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

Йерархично маркиране в SQL

Реализирах го с две колони. Тук го опростявам малко, защото трябваше да запазя името на маркера в отделно поле/таблица, защото трябваше да го локализирам за различни езици:

  • маркировка
  • пътека

Вижте тези редове например:

tag            path
---            ----
database       database/
mysql          database/mysql/
mysql4         database/mysql/mysql4/
mysql4-1       database/mysql/mysql4-1/
oracle         database/oracle/
sqlserver      database/sqlserver/
sqlserver2005  database/sqlserver/sqlserver2005/
sqlserver2005  database/sqlserver/sqlserver2008/

и др.

Използване на like оператор в полето за път, можете лесно да получите всички необходими редове с етикети:

SELECT * FROM tags WHERE path LIKE 'database/%'

Има някои подробности за внедряването, като например, когато преместите възел в йерархията, трябва да промените и всички деца и т.н., но не е трудно.

Също така се уверете, че дължината на вашия път е достатъчно дълга - в моя случай използвах не името на маркера за пътя, а друго поле, за да съм сигурен, че няма да получа твърде дълги пътища.



  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 InnoDB:непървичен ключ с автоматично нарастване

  3. Как да конвертирате таблица родител-дъще (съседство) във вложен набор, използвайки PHP и MySQL?

  4. Прост ранг за актуализиране на MySQL с връзки

  5. Linux shell скрипт за архивиране на база данни