Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Lưu trữ dữ liệu phân cấp (MySQL) để tiếp thị giới thiệu

Bảng kết thúc

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

Để thêm người dùng 10, do người dùng 3 giới thiệu (Tôi không nghĩ là bạn cần khóa bảng giữa hai phần chèn này):

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

Để tìm tất cả người dùng được giới thiệu bởi người dùng 3.

select descendant_id from ancestor_table where ancestor_id=3;

Để đếm những người dùng đó theo độ sâu:

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

Để tìm tổ tiên của người dùng 10.

select ancestor_id, distance from ancestor_table where descendant_id=10;

Hạn chế của phương pháp này là dung lượng lưu trữ mà bảng này sẽ chiếm.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Thực thi lệnh shell từ MySQL

  2. Bạn có thể bỏ qua chuẩn bị PDO nếu không có phần giữ chỗ / dữ liệu động trong một truy vấn không?

  3. Đường dẫn tuyệt đối của Flowfile Nifi

  4. Làm thế nào để chỉ chọn 1 mục bảng con cho mỗi bản ghi mẹ?

  5. Laravel + Vagrant =Quyền truy cập bị từ chối đối với người dùng 'root' @ 'localhost'