如何在php中显示sql选择父项和子项

如何在php中显示sql选择父项和子项,php,sql,Php,Sql,也许是一个简单的问题,但经过几个小时的阅读,我仍然没有找到答案 我试图在不不断重复父行的情况下,在父行的值旁边获取subrow的值: 例如: 表1:ParentId=1,ParentName=ParentName 表2: ChildId=1,ParentId=1,ChildName=ChildName1 ChildId=2,ParentId=1,ChildName=ChildName2 当前JOIN的结果是: ParentId, ParentName, ChildId, ChildName1 P

也许是一个简单的问题,但经过几个小时的阅读,我仍然没有找到答案

我试图在不不断重复父行的情况下,在父行的值旁边获取subrow的值:

例如:

表1:ParentId=1,ParentName=ParentName

表2: ChildId=1,ParentId=1,ChildName=ChildName1

ChildId=2,ParentId=1,ChildName=ChildName2

当前JOIN的结果是:

ParentId, ParentName, ChildId, ChildName1
ParentId, ParentName, ChildId, ChildName2
但我想显示如下数据:

<div>Div with parent name</div>
<div>Div with ChildName1</div>
<div>Div with ChildName2</div>

<div>Div with parent name2</div>
<div>Div with ChildName1</div>
<div>Div with ChildName2</div>

您可以按父ID排序,然后检查它是否已更改。如果已更改输出,则输出父级的名称。大概是这样的:

$query = "query selecting data with join... ORDER BY ParentId";
$result = $mysqli->query($query);
$lastParent = 0;
while ( $row = $result->fetch_assoc($result) )
{
    if ( $row['ParentId'] != $lastParent )
    {
        echo '<div>' . $row['ParentName'] . '</div>';
    }
    $lastParent = $row['ParentId'];
    echo '<div>' . $row['ChildName'] . '</div>';
}
$query=“查询通过联接选择数据…按父ID排序”;
$result=$mysqli->query($query);
$lastParent=0;
while($row=$result->fetch_assoc($result))
{
如果($row['ParentId']!=$lastParent)
{
回显'.$row['ParentName'].';
}
$lastParent=$row['ParentId'];
回显'.$row['ChildName'].';
}

使用该选项,父项名称将仅在ID更改时输出,并且当我们按ID排序时,所有子项将按其父项分组并一起输出。

以下代码修复了该问题

$result = mysqli_query($link, "SELECT * FROM TestParent a

        LEFT JOIN TestChild b ON a.ParentId = b.ParentId

    ORDER BY a.ParentId ASC, b.ChildName ASC");

$lastParent = 0;

while($row = mysqli_fetch_assoc($result))
{
if ( $row['ParentId'] != $lastParent )  {

    echo '<div>' . $row['ParentName'] . '</div>';
}
$lastParent = $row['ParentId'];

echo '<div>' . $row['ChildName'] . '</div>';
$result=mysqli\u query($link,“从TestParent a中选择*)
左连接a.ParentId=b.ParentId上的TestChild b
由a.ParentId ASC、b.ChildName ASC)订购;
$lastParent=0;
while($row=mysqli\u fetch\u assoc($result))
{
如果($row['ParentId']!=$lastParent){
回显'.$row['ParentName'].';
}
$lastParent=$row['ParentId'];
回显'.$row['ChildName'].';

}

Thanx!工作完美!
$result = mysqli_query($link, "SELECT * FROM TestParent a

        LEFT JOIN TestChild b ON a.ParentId = b.ParentId

    ORDER BY a.ParentId ASC, b.ChildName ASC");

$lastParent = 0;

while($row = mysqli_fetch_assoc($result))
{
if ( $row['ParentId'] != $lastParent )  {

    echo '<div>' . $row['ParentName'] . '</div>';
}
$lastParent = $row['ParentId'];

echo '<div>' . $row['ChildName'] . '</div>';