PHP和SQL显示具有相同值的行

PHP和SQL显示具有相同值的行,php,Php,我在SQL中有两个这样的表 该查询获取所有必需的信息。问题是我想显示这样的信息,如所需的最终结果: 一些PHP代码:如果查询有问题,对其进行修改是可以的 try{ $db=new readPDO('username'); $sql=" SELECT test.SAME, test.Nationality, test.Name, test2.Job FROM test LEFT JOIN test2 ON test.

我在SQL中有两个这样的表

该查询获取所有必需的信息。问题是我想显示这样的信息,如所需的最终结果:

一些PHP代码:如果查询有问题,对其进行修改是可以的

try{
    $db=new readPDO('username');
    $sql="
        SELECT test.SAME, test.Nationality, test.Name, test2.Job
        FROM test
        LEFT JOIN test2
        ON test.noID=test2.noID; 
    ";
    $statement=$db->prepare($sql);
    $statement->execute();
    if($statement->rowCount())
    {

        print"
            <table width='280' border='1'>
            ";
        while ($selector = $statement->fetch(PDO::FETCH_ASSOC))
            print"<tr><td>$selector[SAME]</td></tr>";
        print"
            </table>
            ";

    }   
    else
        print"Error";
} catch(PDOException $e)
{
    echo $e->getMessage();
}
当前结果

使用代码计数器组合输出。为了获得最佳结果,我建议您首先将order by添加到查询中

SELECT test.SAME, test.Nationality, test.Name, test2.Job
FROM test
LEFT JOIN test2
ON test.noID=test2.noID
order by test.SAME asc
;
然后在PHP while循环中使用计数器计算要应用的行跨度

$rowspanCounter = 1; 
$_same = '';
while ($selector = $statement->fetch(PDO::FETCH_ASSOC)){

   if($_same == $selector[SAME]){
   $rowspanCounter++;
   }
   else{
    $_same = $selector[SAME];
    $table_string .= "<tr><td rowspan=".$rowspan.">$selector[SAME]</td>";
    $rowspanCounter = 1;
      }
....//rest of the rows here.


 print"</tr>";
    }
    //outside the while loop
    print "</table>";
你在找这个吗

  SELECT test.SAME , test.Nationality, test.Name, coalesce(test2.Job,'')jobb
  FROM test
  LEFT JOIN test2
  ON test.noID=test2.noID
  group by SAME , name
  order by same desc

下面是如何执行的示例

以及执行代码时会发生什么情况?仅图像的第一行。将实际结果添加到代码中,以便我们可以看到。第一行的第一列应该是555吗?如果不是的话,为什么是最后的444,你如何决定它为什么会出现?不,对不起,应该是555,我在同一个问题上遇到了错误。注意:未定义的变量:_samefined一个错误现在。您必须在while循环之前初始化相同的变量$\u。