【发布时间】:2013-04-06 13:12:43
【问题描述】:
我在尝试以表格格式显示 MySQL 数据时遇到问题。基本上,我有一个表格,其中存储有金额、项目、货币和位置字段的付款。我想将这些显示在一个表格中,该表格显示顶部的位置,第二行的货币,第一列行中的项目,然后是与位置/货币对应的表格其余部分中的付款总和。这是我的 MySQL 表数据的示例:
item | amount | currency | location
----------------------------------------------
Item 1 | 250 | USD | UK
Item 2 | 450 | GBP | UK
Item 3 | 780 | EUR | Germany
Item 2 | 50 | GBP | Spain
Item 2 | 150 | GBP | Spain
Item 4 | 375 | USD | UK
Item 4 | 650 | GBP | Germany
Item 1 | 350 | USD | UK
我希望达到的最终结果是这样的:
| Germany | Spain | UK |
| EUR | GBP | GBP | GBP | USD |
---------------------------------
Item 1 | | | | | 600 |
Item 2 | | | 200 | 450 | |
Item 3 | 780 | | | | |
Item 4 | | 650 | | | 375 |
目前,我正在使用多个查询来实现结果,这些查询对每个项目使用大量嵌套查询,如下所示:
<table width="1046" border="0">
<tr>
<td></td>
<td colspan="2">Germany</td>
<td>Spain</td>
<td colspan="2">UK</td>
</tr>
<tr>
<td></td>
<td>EUR</td>
<td>GBP</td>
<td>GBP</td>
<td>GBP</td>
<td>USD</td>
</tr>
<? $q1 = mysqli_query("SELECT item FROM table1 group by item order by item asc");
while($row1 = mysqli_fetch_assoc($q1)){
$item = $row1['item']; ?>
<tr>
<td><? echo $item; ?></td>
<? $q2 = mysqli_query("SELECT sum(amount) as amt from table1 WHERE currency='EUR' and item='$item' and location='Germany'");
while($row2 = mysqli_fetch_assoc($q2)){ ?>
<td><? echo number_format($row2['amt'],0); ?></td>
<? } ?>
<? $q3 = mysqli_query("SELECT sum(amount) as amt from table1 WHERE currency='GBP' and item='$item' and location='Germany'");
while($row3 = mysqli_fetch_assoc($q3)){ ?>
<td><? echo number_format($row3['amt'],0); ?></td>
<? } ?>
<? $q4 = mysqli_query("SELECT sum(amount) as amt from table1 WHERE currency='GBP' and item='$item' and location='Spain'");
while($row4 = mysqli_fetch_assoc($q4)){ ?>
<td><? echo number_format($row4['amt'],0); ?></td>
<? } ?>
<? $q5 = mysqli_query("SELECT sum(amount) as amt from table1 WHERE currency='GBP' and item='$item' and location='UK'");
while($row5 = mysqli_fetch_assoc($q5)){ ?>
<td><? echo number_format($row5['amt'],0); ?></td>
<? } ?>
<? $q6 = mysqli_query("SELECT sum(amount) as amt from table1 WHERE currency='USD' and item='$item' and location='UK'");
while($row6 = mysqli_fetch_assoc($q6)){ ?>
<td><? echo number_format($row6['amt'],0); ?></td>
<? } ?>
</tr>
<? } ?>
</table>
我想知道是否有更好的方法来实现相同的结果?
【问题讨论】:
标签: php mysql html-table