MySQL データをテーブル形式で表示しようとしているときに問題が発生しました。基本的に、金額、アイテム、通貨、場所のフィールドを持つ支払いを格納するテーブルがあります。これらをテーブルに表示して、上部に場所、2 行目に通貨、最初の列の行にアイテムを表示し、場所/通貨に対応する残りのテーブル内の支払いの合計を表示したいと考えています。これは私の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>
同じ結果を達成するためのより良い方法があるかどうか疑問に思っていますか?