从MySQL和类别下的组获取数据

时间:2018-10-10 02:03:04

标签: php mysql

我通过这种结构从数据库中获取数据

Cars   | Category   | 1Days |   3 Days  
-------|--------------|------–--|---------––
Car1   |  Off Road  | 50.00 | 90,00  
Car2   |  Off Road  | 50.00 | 90,00  
Car3   |  Minivan   | 50.00 | 90,00  

我想将其更改为

Off Road
Cars   | 1Days |    3 Days  
-------|----------|---––
Car1   |  50.00 | 90,00  
Car2   |   50.00 | 90,00  
Minivan
 Cars   | 1Days |   3 Days  
-------|----------|---––
Car3   |  50.00 | 90,00  

我想将表归类

感谢您的进阶

1 个答案:

答案 0 :(得分:2)

您可能必须在PHP表示层中进行处理。这是一种方法:

$sql = "SELECT * FROM yourTable ORDER BY category, cars";
$result = $conn->query($sql);
$category = NULL;

echo "<table colspan=\"3\">";

if ($result->num_rows > 0) {
    while ($row = $result->fetch_assoc()) {
        if ($category != $row["category"]) {
            echo "<tr><td colspan=\"3\">" . $row["category"] . "</tr>";
            echo "<tr><td>Cars</td><td>1 Days</td><td>3 Days</td></tr>";
            $category = $row["category"];
        }
        echo "<tr>";
        echo "<td>" . $row["cars"] . "</td>";
        echo "<td>" . $row["1days"] . "</td>";
        echo "<td>" . $row["3days"] . "</td>";
        echo "</tr>";
    }
    echo "</table>";
}

上面的代码使用逻辑,该逻辑在结果集中看到尚未看到的类别时将打印两个标题行。第一标题行仅包含类别,第二标题行包含表中三列的标题。

这里重要的一点是,我们在MySQL查询中使用ORDER BY category, cars在结果集数据中添加所需的顺序。如果不使用ORDER BY,我们的方法可能行不通。