2013-05-19 64 views
1

我現在感到困惑。複雜的MySQL查詢傳銷業務

我有一個數據庫開發爲傳銷(多級營銷)公司。因此,有一個會員數據庫..每個成員都有唯一的ID,稱爲membercode ..所有成員都有其下的成員..每個成員都有他/她下的3個成員..並且這3個成員可以具有相同的成員..所有成員被添加到名爲「tbMembers」的同一個數據庫表中,並且每個成員都有一個「parentID」,我在該成員所在的位置添加成員的成員代碼?

現在的問題是,我想要一個SQL查詢,它可以在下面和下面,像'John Doe'下有三個成員,名叫'Suzan'和'Ellie'和'Smith'。而'蘇珊'也有3名成員在她之下,並且對於Ellie也是如此。例如......'John Doe'在他的下線有大約300名成員?並且他得到的任何會員的下線支付增加3個成員,該成員增加3個成員也可以獲得支付,他的上線成員也可以獲得一定數額的金錢支付。 我可以獲得1位特定會員下的任何會員的下線級別嗎?,並可以根據3名成員加入其中計算他的收入。

我正在使用PHP並使用My-SQL。怎麼做?請幫我解決guyz問題。

+2

今天我會成爲那個傢伙,問你有沒有嘗試過什麼? – peterm

+0

向我們展示您的代碼以及破解的位置? – OneSolitaryNoob

+0

你必須使用'遞歸'。參見[這裏] [1] [1]:http://stackoverflow.com/questions/5725914/mysql-recursive-tree-search – Abadis

回答

1

我不知道你的表結構,但這是algorithme:

這裏是PHP代碼

function get_recursive_users($pid) 
    { 
     $users = //get a query from users that parentid= $pid; 
      /*for example db::query('SELECT * FROM `members` WHERE parentid="'.$parentid.'"');*/ 




     foreach($users as $user) 
     { 
      return get_recursive_users($user['pid']); 
     } 

    } 

    $parentid = 'your current user Pid' 
    get_recursive_users($parentid); 
+0

這段代碼看起來很容易!但它會降低系統我猜..你說什麼?如果任何用戶下有超過1000名成員,則可能需要時間。 – idleMind

+0

這是關於大學的課程,在每種方式中命名算法設計 縮放樹至少你應該使用遞歸方式 –

0

這個怎麼樣:

function get_downline_list($pid) 
{ 
    /* query the database for all users ('SELECT * FROM `members`);*/ 
    foreach($row = mysql_fetch_assoc($result)) 
    { 
     $allUsers[$row[parentID]][]=$row; 
    } 

    $dowlnineCount=1; 
    $nextDownline=$allUsers[$pid]; 

    while($nextDownline && count($nextDownline)){ 
     $allDownlines[$dowlnineCount]=$nextDownline; 

     foreach($nextDownline as $user){ 
      $anotherDownline[]=$user; 
     } 

     $nextDownlnine=$anotherDownline; 
    } 
} 

我衝,因爲我的筆記本電腦正在運行沒有果汁......我會在幾分鐘後回顧一下代碼。

0

我們發現了其他解決方案來快速瞭解用戶鏈。

每個成員都有「路徑」字段,由用戶在他之上,包括他的id:「1,5,7,8,9」

你需要爲每一個新用戶這條道路。我們仍然使用'id'和'pid'