sql >> Database teknologi >  >> RDS >> Mysql

Lagring af hierarkiske data (MySQL) til henvisningsmarkedsføring

Lukningstabel

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

For at tilføje bruger 10, henvist af bruger 3. (Jeg mener ikke du skal låse tabellen mellem disse to indsættelser):

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);

For at finde alle brugere, der er henvist af bruger 3.

select descendant_id from ancestor_table where ancestor_id=3;

Sådan tælles disse brugere efter dybde:

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

For at finde forfædrene til bruger 10.

select ancestor_id, distance from ancestor_table where descendant_id=10;

Ulempen ved denne metode er mængden af ​​lagerplads denne tabel vil tage.



  1. Dataingeniørinterviewspørgsmål med Python

  2. Er det muligt at have funktionsbaseret indeks i MySQL?

  3. Hvad er brugen af ​​en markør i SQL Server?

  4. SQL-forespørgsel bryder af en eller anden grund