Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Menyimpan Data Hirarki (MySQL) untuk Pemasaran Rujukan

Tabel Penutup

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

Untuk menambahkan pengguna 10, dirujuk oleh pengguna 3. (Saya tidak berpikir anda perlu mengunci tabel di antara dua penyisipan ini):

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

Untuk menemukan semua pengguna yang dirujuk oleh pengguna 3.

select descendant_id from ancestor_table where ancestor_id=3;

Untuk menghitung pengguna tersebut berdasarkan kedalaman:

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

Untuk menemukan nenek moyang pengguna 10.

select ancestor_id, distance from ancestor_table where descendant_id=10;

Kelemahan metode ini adalah jumlah ruang penyimpanan yang akan digunakan tabel ini.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PHP mengikat tipe data 'besar' (pernyataan yang disiapkan MySQLi)

  2. Cara memilih setiap baris ke-n di mySQL mulai dari n

  3. PHP &WP:coba tangkap tidak berfungsi ketika kesalahan dari DB dilemparkan

  4. SQL - Temukan semua waktu henti dan lamanya waktu henti dari data MySQL (kumpulan baris dengan stempel waktu dan pesan status)

  5. Dapatkan catatan untuk waktu minimum setiap orang setiap hari