Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

रेफ़रल मार्केटिंग के लिए पदानुक्रमित डेटा (MySQL) संग्रहीत करना

क्लोजर टेबल

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

उपयोगकर्ता 10 जोड़ने के लिए, उपयोगकर्ता 3 द्वारा संदर्भित। (मुझे नहीं लगता कि सोच आपको इन दो सम्मिलनों के बीच तालिका को लॉक करने की आवश्यकता है):

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

उपयोगकर्ता 3 द्वारा संदर्भित सभी उपयोगकर्ताओं को खोजने के लिए।

select descendant_id from ancestor_table where ancestor_id=3;

उन उपयोगकर्ताओं को गहराई से गिनने के लिए:

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

उपयोगकर्ता के पूर्वजों को खोजने के लिए 10.

select ancestor_id, distance from ancestor_table where descendant_id=10;

इस पद्धति का दोष यह है कि यह तालिका कितनी संग्रहण स्थान लेगी।



  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 . में विशेष रूप से mysql डेटाबेस से सभी तालिका नाम कैसे प्रदर्शित करें

  2. mysql dd-mon-yy प्रारूप में दिनांक की तुलना कैसे करें?

  3. इन 2 तालिकाओं के लिए किस प्रकार के संबंध की आवश्यकता है?

  4. Php . में ड्रॉपडाउन चयन के आधार पर गतिशील रूप से टेक्स्ट फ़ील्ड में सामग्री कैसे प्राप्त करें

  5. उपयोगकर्ता खाता प्रबंधन, भूमिकाएं, अनुमतियां, प्रमाणीकरण PHP और MySQL - भाग 4