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.
}
?>