Py学习  »  DATABASE

从mysql获取数据并按类别分组

Vano Nasaridze • 5 年前 • 1149 次点击  

我用这个结构从数据库中获取数据

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  

我想将表按类别分组

谢谢你的预付款

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/39845
 
1149 次点击  
文章 [ 1 ]  |  最新文章 5 年前
Tim Biegeleisen
Reply   •   1 楼
Tim Biegeleisen    6 年前

您可能需要从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>";
}

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

这里一个重要的注意事项是我们使用 ORDER BY category, cars 在mysql查询中强制执行我们希望的结果集数据顺序。不使用 ORDER BY ,我们的方法可能行不通。