如何使用和行跨度对数据库中的值进行分组?

时间:2018-06-30 17:02:19

标签: php mysql database

因此,我正在从数据库中读取一些值。例如数据库中的“结果”,“团队”,“联盟”。我试图在<table>中显示按联赛分组的特定球队的比赛结果,如下所示:

Picture

假设我的数据库包含以下数据:

result1     team1   league1
result2     team1   league1
result100   team1   league2
result101   team1   league2
result88    team1   league2

我尝试了很多东西,但是我无法使它工作。另外,联赛单元格的rowspan必须等于特定联赛中检测到的结果数。可以使用mysql_num_rows来完成,但是我不知道确切的位置。那么我怎样才能使这张桌子工作呢?非常感谢!

2 个答案:

答案 0 :(得分:0)

按联赛对输出进行分组很简单,只需对查询结果进行分类即可。既然你的问题没有 包括您的表格架构或任何php代码,我对您的表格做出了一些假设,并将保留打开与 您的数据库,并执行sql语句给您。

$qstr = "SELECT league, team, event
FROM table
ORDER BY league, team, event";

//  Execute query, get results into  associative array $allrows

$league = "";
$col1 = "";
$col2 = "";
echo "<table>\n";
foreach($allrows as $rowno => $row) {
    if($league != $row['league']) {
        if($league != "") {
            echo "<tr>\n";
            echo "<td>".$col1."</td>";
            echo "<td>".$col2."</td>";
            echo "</tr>\n";
        }
        $league = $row['league'];
        $col1 = $league;
        $col2 = "";
    }
    $col2 .= $row['team']." got ".$row['event']."<br />\n";
}
echo "<tr>\n";
echo "<td>".$col1."</td>";
echo "<td>".$col2."</td>";
echo "</tr>\n";
echo "</table>\n";

答案 1 :(得分:0)

我已经尝试了一些方法,它对我有用,希望它对您有用... 看一下代码:

$db = new PDO('mysql:host=localhost;dbname=you_dbname', 'user', 'password');
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

$sql = 'SELECT league, result, team FROM matches_info';
$stmt = $db->query($sql);
echo "<table border=\"1\">";
while($row = $stmt->fetch()){
    echo '<tr>
    <td rowspan="3">'.$row['pcid'].'</td>
    <tr><td>'.$row['pid'].' got '.$row['pc_lect_num'].' </td></tr>
    <tr><td>'.$row['pid'].' got '.$row['pc_lect_num'].'</td></tr></tr>';
}
echo "</table>";

这是非常基本的操作,您可以添加更多功能以改善其功能。