![]() |
1
16
我建议只使用一个简单的查询来获取所有行,并按类别ID排序。只有当类别的值与前一行的值不同时,才输出该类别。
|
![]() |
2
8
这应该有效:
你可以自己设计的输出。只需将所有内容添加到一个多维数组中,类别ID作为第一级键。 编辑 :结果数组可能如下所示:
|
![]() |
3
2
你想要的是按类别排序,而不是按组排序。
当您遍历列表时,只要在类别_id更改时输出一个新的头。 |
![]() |
4
2
这种方法不需要按类别ID对数据进行排序。 您可以使用PHP将每个类别分组在一个嵌套数组中。 之后,数据可以很容易地显示在表中,传递到图形/图表库等。
|
![]() |
5
0
最简单的方法可能是提取类别列表,迭代并提取其附加产品。(即几个问题。) 例如(伪代码): $result = fetch_assoc("SELECT category_id FROM categories"); foreach($result as $row) { echo $row['category_id']; $result2 = fetch_assoc("SELECT product_id FROM products"); foreach($result2 as $row2) { echo $row2['product_id']; } } 如果您想在一个查询中完成这一切,可以执行如下操作: $result = fetch_assoc("SELECT product_id, category_id FROM products p JOIN categories c ON p.category_id = c.category_id ORDER BY c.category_id ASC"); $last = null; foreach($result as $row) { # Output the category whenever it changes if($row['category_id'] != last) { echo $row['category_id']; $last = $row['category_id']; } echo $row['item_id']; } 然后,您可以对结果集进行迭代,并在类别名称发生更改时将其拉出。 在从数据库中获取SQL之前,可能有一种更复杂、更优雅的方法来编写它来完成所有工作,但我并不那么聪明。;) 注意:示例使用伪代码。我使用的mysql抽象类的工作方式如下: $db->query("SELECT stuff"); $db->multi_result(); // returns 2d-associative array
那时我可以
如果您愿意,我可以发布抽象层的代码。 |
![]() |
6
0
|
![]() |
hello_programmers · Mysql从其他表输出一列 2 年前 |
![]() |
Community wiki · 这个MySQL语句出了什么问题? 2 年前 |
![]() |
Community wiki · 优化从同一表中提取的多列的查询 2 年前 |
![]() |
Popo · Sql查询:返回数据库中不可用的where条件 2 年前 |
|
Hamdan Nuramdani · 对账单中一周内不同表中的数据求和 2 年前 |
|
Kugelfisch · 用php为数据库加密数据 2 年前 |