2016-09-16 2 views
1

は私がuser親と子のデータベーススキーマ

USER(表)

user_id  name  status_privilege(0=child,1=parent) added_user_id 
    2   abc     1 
    13  child_1     0       2 
    14  child_2     0       2 

という名前のテーブルを持っている私は、ディスプレイuser_id = 2すべてuser_id = 14,15(すべての子のログイン)での(親の)データが欲しいです。そしてさんのデータをuser_id = 2さんのデータに表示します。 (Viceversa)

そのために何をするのですか?

このクエリを試しました。

SELECT *,child.user_id as child_user_id,parent.user_id as parent_user_id 
FROM user as parent 
INNER JOIN user as child ON parent.user_id = child.user_added_id 
WHERE child.user_id = '14' 

ので、私はchild_user_id = 14 & parent_user_id = 2

を得ました。しかし、私は、クエリの下に置くとき、それは私に空白の結果を与えることを望みます。 (child.user_id = '2'を変更)

SELECT *,child.user_id as child_user_id,parent.user_id as parent_user_id 
FROM user as parent 
INNER JOIN user as child ON parent.user_id = child.user_added_id 
WHERE child.user_id = '2' 

だから私はしたいが、私は、クエリを発射するときという単一のクエリあるユーザーが親である場合にも、私はそれは、子供のいたいよりuser_id ='2'内のすべてのデータは、14 & 15ユーザーのデータを意味しています。また、すべての子で2番目のuser_idのデータ。

注:他の表のデータはすべてuser_idですので、それは可能ですか? 既存のプロジェクトの要件であるため、データベース構造を変更することはできません。それ以外の場合は、MySQLの親子構造の階層に従うことができます。

+0

あなたが正確に証明する必要がありますか? –

+0

私はすべての彼の子供の親のすべてのデータと親のすべての子のデータを表示したい。 – Bhavin

+0

あなたは左に参加しようとしましたか? –

答えて

2

答えは、私は質問から理解した内容に基づいてされては、次のとおりです。 子ユーザがログインした場合、親のユーザーは、唯一の親IDでログインした場合、子ユーザIDの完全な配列をしたい

ので、PHPであなたはそれを介して派生することができます

<?php 
    $user=array(); // this array will contains the user info 
    $res=$db->query("select * from user where user_id='$id'"); //$id the user id with which you want to check whether it is parent or child. 
    if($res->num_rows > 0) 
    { 
     $row=$res->fetch_assoc(); 
     if($row['status_privilege']==0) 
     { 
      $res_main=$db->query("SELECT *,child.user_id as child_user_id,parent.user_id as parent_user_id FROM user as parent INNER JOIN user as child ON parent.user_id = child.user_added_id WHERE child.user_id = '".$row['user_id']."'"); 
      $user=$res_main->fetch_assoc(); 
     } 
     else 
     { 
      $res_main=$db->query("SELECT * from user where added_user_id='".$row['user_id']."'"); 
      $user=$row; 
      $user["child_array"]=array(); 
      while($row_child=$res_main->fetch_assoc()) 
      { 
        array_push($user['child_array'],$row_child['user_id']); 
      } 
     } 
    } 
    //you can further check that if user is parent or child by using this condition. 
    if($user['status_privilege']==1) 
    { 
     //parent login it also contain the all child user ids 
    } 
    else 
    { 
     //child login it also contain the parent id as you have done it before. 
    } 
?> 
+1

ohkありがとうございました。 – Bhavin