2013-05-19 2 views
1

나는 혼란스러워하고 있습니다.MLM 비즈니스를위한 복잡한 MySQL 쿼리

MLM (Multi Level Marketing) 회사 인 용으로 개발 된 데이터베이스가 하나 있습니다. 그래서 하나의 멤버 데이터베이스가 있습니다 .. 각 멤버는 membercode라는 고유 한 ID를가집니다. 모든 멤버는 그 아래에 멤버가 있습니다 .. 모든 멤버는 그 아래에 3 명의 멤버가 있고 그 3 명의 멤버는 그 아래에있을 수 있습니다 .. 모든 멤버 "tbMembers"라는 이름의 동일한 데이터베이스 테이블에 추가되며 각 구성원마다 거기에 "parentID"가 있는데 그 구성원은 누구의 구성원인지를 추가합니다.

이제 질문이 있습니다. 'Suzan', 'Ellie', 'Smith'라는 3 명의 멤버가 속한 'John Doe'와 (과) 같은 SQL 쿼리를 원합니다. 그리고 'Suzan'도 그녀 밑에 3 명의 회원을두고 .. Ellie도 마찬가지입니다. 예를 들면 .. 'John Doe'는 다운 라인에 약 300 명의 회원을두고 있습니까? 그리고 그는 어떤 회원이 자신의 하위 라인 아래에 3 명의 회원을 추가하기 위해 돈을 받고, 그 회원은 3 명의 회원을 추가로 지불하고 또한 그의 업 라인 회원은 어느 정도의 돈을 받는다. 특정 회원 이하의 회원의 다운 라인 레벨 번호를 얻을 수 있습니까 ??이며 그를 고용 한 3 명의 회원을 기준으로 수입을 계산할 수 있습니다.

저는 PHP를 사용하고 My-SQL을 사용하고 있습니다. 그것을하는 방법? 나 좀 도와 줘.

+2

저는 오늘 그 남자가 될 것이고, 당신은 아직 아무것도 시도하지 않았습니까? – peterm

+0

코드를 보여 주시고 어디에서 코드가 깨지십니까? – OneSolitaryNoob

+0

'recursive'를 사용해야합니다. [여기]를 참조 [1] [1] : 내 asp.net 중 하나에 무한 재귀 SQL 쿼리를 시도 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

우리는 사용자 체인을 신속하게 이해할 수있는 다른 솔루션을 발견했습니다. '1,5,7,8,9,'당신은 각각의 새로운 사용자에 대해이 경로를 생성 할 필요가

:

각 회원은 자신의 ID를 포함 그 위에 사용자로 구성된 '경로'필드가 있습니다. 그리고 우리는 여전히 'id'와 'pid'를 사용합니다.