【发布时间】:2018-02-11 21:39:19
【问题描述】:
table: car_cat
+-----+---------+
| id | name |
+-----+---------+
| 1 |sedan |
| 2 |suv |
| 3 |truck |
+-----+---------+
table: Cars
+-----+---------+------------------------+--------------+---------+-------------+
| id | date | category | make | model | price |
+-----+---------+------------------------+--------------+---------+-------------+
| 1 |01-01-18 | sedan | ford | taurus | 15000 |
| 2 |01-01-18 | sedan | ford | fiesta | 15000 |
| 3 |01-01-18 | sedan | ford | fucus | 15000 |
| 4 |01-02-18 | sedan | honda | accord | 25000 |
| 5 |01-02-18 | sedan | bmw | 535xi | 35000 |
| 6 |01-03-18 | suv | mercedes | ml350 | 15000 |
| 7 |01-03-18 | suv | mercedes | gl350 | 35000 |
| 8 |01-03-18 | suv | mercedes | gle350 | 45000 |
| 9 |01-01-18 | suv | chevrolet | suburban| 65000 |
| 10 |01-03-18 | suv | chevrolet | tahoe | 55000 |
| 11 |01-01-18 | truck | ford | f-150 | 45000 |
| 12 |01-01-18 | truck | ford | f-250 | 65000 |
| 13 |01-01-18 | truck | ford | f-350 | 85000 |
| 14 |01-01-18 | truck | chevrolet |silverado| 85000 |
+-----+---------+------------------------+--------------+---------+-------------+
输出应该是:
类别:
*SEDANS(循环并计算仅来自一个品牌的所有汽车并计算它们)
FORD
+-----+---------+------------------------+--------------+---------+-------------+
| id | date | category | make | model | price |
+-----+---------+------------------------+--------------+---------+-------------+
| 1 |01-01-18 | sedan | ford | taurus | 15000 |
| 2 |01-01-18 | sedan | ford | fiesta | 15000 |
| 3 |01-01-18 | sedan | ford | fucus | 15000 |
+-----+---------+------------------------+--------------+---------+-------------+
total: 3 cars, total value $45,000
HONDA
+-----+---------+------------------------+--------------+---------+-------------+
| id | date | category | make | model | price |
+-----+---------+------------------------+--------------+---------+-------------+
| 4 |01-02-18 | sedans | honda | accord | 25000 |
+-----+---------+------------------------+--------------+---------+-------------+
total: 1 car, total value $25,000
HONDA
+-----+---------+------------------------+--------------+---------+-------------+
| id | date | category | make | model | price |
+-----+---------+------------------------+--------------+---------+-------------+
| 5 |01-02-18 | sedans | bmw | 535xi | 35000 |
+-----+---------+------------------------+--------------+---------+-------------+
total: 1 car, total value $35,000
*SUV
MERCEDES
+-----+---------+------------------------+--------------+---------+-------------+
| id | date | category | make | model | price |
+-----+---------+------------------------+--------------+---------+-------------+
| 6 |01-03-18 | suv | mercedes | ml350 | 15000 |
| 7 |01-03-18 | suv | mercedes | gl350 | 35000 |
| 8 |01-03-18 | suv | mercedes | gle350 | 45000 |
+-----+---------+------------------------+--------------+---------+-------------+
total: 3 cars, total value $95,000
CHEVROLET
+-----+---------+------------------------+--------------+---------+-------------+
| id | date | category | make | model | price |
+-----+---------+------------------------+--------------+---------+-------------+
| 9 |01-01-18 | suv | chevrolet | suburban| 65000 |
| 10 |01-03-18 | suv | chevrolet | tahoe | 55000 |
+-----+---------+------------------------+--------------+---------+-------------+
total: 2 cars, total value $120,000
*卡车
FORD
+-----+---------+------------------------+--------------+---------+-------------+
| id | date | category | make | model | price |
+-----+---------+------------------------+--------------+---------+-------------+
etc ....
基本上代码应该: 1:通读所有记录 2:将它们分组 3:将它们与特定组一起列出,同时计数。
$sql = "SELECT * FROM `car_cat` ORDER BY `name`";
$result = $mydb->runQuery($sql);
while($row = mysqli_fetch_array($result)) {
?>
<table width="100%">
<tr>
<td colspan="6"><?php echo strtoupper($row['name']);?></td>
</tr>
<tr>
<th>id</th>
<th>date</th>
<th>category</th>
<th>make</th>
<th>model</th>
<th>amount</th>
</tr>
<?php
$catName = $row['name'];
$sql_show = "SELECT * FROM `expenses` where `cat` = '$catName' ORDER BY `id` DESC";
$result_show = $mydb->runQuery($sql_show);
$showTotal = 0;
while($row_show = mysqli_fetch_array($result_show)) {
?>
<tr>
<td><?php echo $row_show['id'];?></td>
<td><?php echo $row_show['date'];?></td>
<td><?php echo $row_show['category'];?></td>
<td><?php echo $row_show['make'];?></td>
<td><?php echo $row_show['model'];?></td>
<td>$<?php echo number_format((float)$row_show['price'], 2, '.', ',');?></td>
</tr>
<?php
$showTotal = $showTotal + $row_show['amount'];
} //while
?>
<tr>
<td colspan="4" align="right">TOTAL:</td>
<td colspan="2" align="left">$<?php echo number_format((float)$showTotal, 2, '.', ','); ?></td>
</tr>
</table>
<?php
} //while
?>
但此代码仅按类别对其进行分组。它不会将制作组合在一起并为它们制作单独的表格。这就是我真正需要的。
谢谢
【问题讨论】:
-
您的查询在哪里?
-
会按要求做
-
没有名称栏,用这个基本信息编辑问题请不要发表评论
-
没有名称列,只有 id、日期、类别、品牌、型号和价格
-
那你为什么有
ORDER BY name??
标签: php mysql nested-loops