Php 父和子数据库架构

Php 父和子数据库架构,php,mysql,database,Php,Mysql,Database,我有一个名为user 用户(表) 我想在所有用户id=14,15(所有孩子的登录)中显示用户id=2(家长的)数据。我还想在用户id=2的数据中显示用户id=14,15的数据。(维切维萨) 那该怎么办呢 我试过这个问题 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 = ch

我有一个名为
user

用户(表)

我想在所有
用户id=14,15
(所有孩子的登录)中显示
用户id=2
(家长的)数据。我还想在
用户id=2
的数据中显示
用户id=14,15
的数据。(维切维萨)

那该怎么办呢

我试过这个问题

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'
所以我得到了孩子用户id=14和家长用户id=2

但我希望当我把下面的查询,它给我一个空白的结果。(更改了child.user\u id='2')

所以我想知道的是,当我启动查询单个查询时,如果用户是父用户,那么我想知道
user\u id='2'
中的所有子数据意味着14和15个用户的数据。和第二个用户id在所有孩子中的数据

注意:其他表格中的所有数据都来自
user\u id
,是否可能?
这是现有项目的要求,因此我不能更改数据库结构,否则我可以遵循父子结构的MySQL层次结构。

答案基于我从问题中了解的内容: 如果父用户登录,则需要完整的子用户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.
   }
?>


您到底需要什么,请说明?我想在其所有子项中显示父项的所有数据,并在父项中显示所有子项的数据。您是否尝试过左联接..?因此,为了澄清:您需要一个具有一个参数(用户id)的单个查询。您希望输出类似于第一个查询的输出:如果用户是父用户,则希望该用户的每个子用户都有一行。如果用户是子用户,是否需要一行?我认为这是您的解决方案:
SELECT*,child.user\u id作为child\u user\u id,parent.user\u id作为parent\u user\u id从user as parent内部加入user as child ON parent.user\u id=child.added\u user\u id其中child.user\u id='2'或parent.user\u 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'
<?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.
   }
?>