Tôi đang cố gắng tìm ra cách tốt nhất để đạt được điều này, tôi thực sự đánh giá cao bất kỳ đầu vào nào.Truy vấn điểm bạn bè được giới thiệu
Một phần của MYSQL Bảng của tôi:
ID , Username , Invited_by
1 , A ,
2 , B , 1
3 , C , 2
4 , D , 2
5 , E , 4
6 , F , 5
Vì vậy, tôi muốn tìm ra người đã mời những người sử dụng nhất, phần Bí quyết là rằng nếu A B mời và B mời C sau đó tôi sẽ đếm Đó Một mời 2 , những gì tôi đang cố gắng đạt được là điều này.
ID , Username , Invited
1 , A , 5
2 , B , 4
3 , C , 0
4 , D , 2
5 , E , 1
6 , F , 0
Giải thích
- F mời không ai, tương tự cho C
- E mời F nên anh có được 1 điểm
- D mời E nên nó có nghĩa là sau khi E đăng ký ông mời F để D nhận được 2 điểm
- B mời C và D, D rồi mời 2 người để B nhận được 4 điểm
- Một người được mời B mà anh ta mời 4 để A có được 5 người
Tôi biết nó phức tạp, đó là lý do tại sao tôi đang cố gắng tìm ra giải pháp tối ưu cho nó.
Cảm ơn,
CẬP NHẬT
Vì vậy, sau khi tôi đã cố gắng tiếp cận khác nhau, tôi tin rằng phương pháp tốt nhất mà tôi đã đưa ra như sau:
- Thêm 1 lĩnh vực cho người sử dụng bảng dưới dạng 'total_invites' ví dụ:
- tạo truy vấn sẽ tính số lượng lời mời cho từng người dùng, bắt đầu từ người dùng mới nhất đến cũ người dùng vì người dùng mới có thể chưa có cơ hội mời bất kỳ ai.
- chạy truy vấn trên cơ sở dữ liệu "cronjob hoặc trên các hàng bị giới hạn mỗi lần"
- khi tôi đạt đến bảng cân bằng logic sẽ thay đổi thay vì tính kết quả khi tôi cần báo cáo tôi sẽ tăng bộ đếm cho mỗi tài khoản và các tài khoản có liên quan bất cứ khi nào một dấu hiệu sử dụng gọi mới trong.
GHI CHÚ
- Ngay cả việc xây dựng một truy vấn cho một người dùng duy nhất có vẻ phức tạp và tôi nghĩ rằng tôi phải làm các truy vấn n cho đến khi tôi đạt đến đáy o f cây mời cho người dùng đó
- tôi đoán khi bảng đạt trạng thái cân bằng, logic sẽ trở nên dễ dàng hơn nhiều.
Vui lòng nếu bạn có bất kỳ suy nghĩ hoặc tham chiếu nào có thể giúp tôi rất biết ơn.
Giải pháp duy nhất là để chạy một vài truy vấn (tùy thuộc vào 'sâu friend' max) thông qua proc lưu trữ hoặc trong ứng dụng của bạn. – Vatev
nếu F mời G, E cũng là một điểm? và G mời H, E được một điểm khác? – Zelldon
Đây là một vấn đề về đệ quy trong MySQL. Như vậy, đó là một câu hỏi thường gặp. – Strawberry