【发布时间】:2015-09-20 11:51:42
【问题描述】:
请有人帮我按计算出的 $changepercentage 对这张表进行排序。 我的表有 1000 多条记录,并按日期顺序上传。我尝试了 arsort() , SORT() 当它是 echo 但 PHP 说它不是一个数组而是一个字符串。 我也试过 mysqli_fetch_array() 但没有运气。 需要你的帮助。
clo_prices(表)
date | name | cl_price |
2015-09-15 | AAA | 10 |
2015-09-15 | BAA | 20 |
2015-09-15 | ABA | 30 |
2015-09-16 | AAA | 86 |
2015-09-16 | BAA | 65 |
2015-09-16 | ABA | 33 |
price_list(表格)
date | name | volume | last |
2015-09-15 | AAA | 6655245 | 56 |
2015-09-15 | ABA | 5666 | 65 |
2015-09-15 | AAB | 1333 | 33 |
2015-09-16 | AAA | 112365 | 56 |
2015-09-16 | ABA | 23131 | 8 |
2015-09-16 | AAB | 23330 | 12 |
2015-09-16 | ABB | 2323122 | 60 |
2015-09-16 | ACB | 21222 | 99 |
想要的结果
date | company | closing | volume | Change % |
2015-09-16 | AAA | 56 | 6655245 | 66 |
2015-09-16 | ABA | 65 | 5666 | 9.7 |
2015-09-16 | ACB | 69 | 1333 | 7 |
2015-09-16 | AAB | 33 | 112365 | 3.2 |
$queryTMG = "SELECT price_list.date, price_list.name, price_list.last, price_list.volume,
clo_prices.date, clo_prices.name, clo_prices.cl_price
FROM price_list
INNER JOIN clo_prices
ON price_list.name = clo_prices.name
WHERE price_list.date= '$dateT' AND
clo_prices.date = '$dateT'
ORDER BY cl_price DESC LIMIT 10 ";
$queryPMG = "SELECT price_list.date, price_list.name, price_list.last, price_list.volume,
clo_prices.date, clo_prices.name, clo_prices.cl_price
FROM price_list
INNER JOIN clo_prices
ON price_list.name = clo_prices.name
WHERE price_list.date= '$dateT' AND
clo_prices.date = '$dateP'
ORDER BY cl_price DESC LIMIT 10";
$resultTMG = mysqli_query($dbc, $queryTMG) or die (mysqli_error());
$resultPMG = mysqli_query($dbc, $queryPMG) or die (mysqli_error());
echo '<table cellpadding = 15 border =1>';
echo '<tr>
<th>Company</th>
<th>Closing Rs.</th>
<th>Volume</th>
<th>Change %</th>
</tr>';
while($rowTMG = mysqli_fetch_assoc($resultTMG) AND $rowPMG = mysqli_fetch_assoc($resultPMG))
{
echo '<tr> <td>'. $rowTMG['name']. '</td>';
echo '<td>'. $rowTMG['last']. '</td>';
echo '<td align = "right">'. $volumeTMG = number_format($rowTMG['volume']). '</td>';
echo '<td align = "right">'.$changeprecentage =
number_format((( $rowTMG['cl_price'] - $rowPMG['cl_price'] ) /
$rowTMG['cl_price']), 2, '.', '' ). '</td> </tr>';
}
echo '</table>';
【问题讨论】:
-
首先你不能同时添加 2 个条件,期望 2 个查询返回相同数量的结果。您可以删除 $volumeTMG = 和 $changeprecentage = 之类的分配,因为这些不是必需的
-
这在一个查询中是可能的。更快,因为查询优化器可以看到如何对表进行排序。