Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Przechowywanie danych hierarchicznych (MySQL) na potrzeby marketingu rekomendacji

Tabela zamknięcia

ancestor_id  descendant_id  distance
    1            1              0
    2            2              0
    3            3              0
    4            4              0
    5            5              0
    6            6              0
    2            3              1

Aby dodać użytkownika 10, wskazanego przez użytkownika 3. (nie sądzę musisz zablokować stół między tymi dwoma wkładkami):

insert into ancestor_table
select ancestor_id, 10, distance+1
from ancestor_table
where descendant_id=3;

insert into ancestor_table values (10,10,0);

Aby znaleźć wszystkich użytkowników poleconych przez użytkownika 3.

select descendant_id from ancestor_table where ancestor_id=3;

Aby policzyć tych użytkowników według głębokości:

select distance, count(*) from ancestor_table where ancestor_id=3 group by distance;

Aby znaleźć przodków użytkownika 10.

select ancestor_id, distance from ancestor_table where descendant_id=10;

Wadą tej metody jest ilość miejsca zajmowanego przez tę tabelę.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Konwersja Mysqli do PDO

  2. Sortowanie tablicy PHP na kolumny

  3. Tworzenie tabeli mysql z jawnym domyślnym zestawem znaków, co jeśli tego nie zrobię?

  4. Symfony2 zwraca pusty JSON przy wywołaniu AJAX, gdy zmienna nie jest pusta

  5. Czy Entity Framework jest powiązany z programem SQL Server?