今天我通过多种不同的方式解决了这个问题,我还没有找到显示数据的最佳方法是使用可以在一个表中显示的单个查询。问题是我试图合并三个查询,但进展不太顺利。我觉得它很接近,但显然不正确。
$sql = (SELECT SUM(datamb) AS value_sum FROM maindata GROUP BY phonenumber UNION select dataplan as currentplan from maindata
GROUP BY phonenumber UNION SELECT DISTINCT phonenumber AS value_sum1 FROM maindata);
$result = mysql_query($sql);
if (!$result) {
echo "Could not successfully run query ($sql) from DB: " . mysql_error();
exit;
}
if (mysql_num_rows($result) == 0) {
echo "No rows found, nothing to print so am exiting";
exit;
}
while ($row = mysql_fetch_assoc($result)){
echo "<TABLE id='display'>";
echo "<td><b>Data Usage This Period: ". ROUND ($row["value_sum"],2) . "MB</b></td> ";
echo "<td><b>Data Plan: ". $row["currentplan"] . "</b></td> ";
echo "<td><b>Phone Number: ". $row["value_sum1"] . "</b></td> ";
echo "</TABLE>";
}
问题是我想要三列数据,但只得到一列包含所有数据
最佳答案
UNION
向查询添加额外的行。看起来您只需要多列。看看这个查询是否能让你更接近;如果没有,请显示一些示例数据和预期结果:
SELECT
phonenumber AS value_sum1
dataplan AS currentplan,
SUM(datamb) AS value_sum
FROM maindata
GROUP BY
phonenumber,
dataplan
此外,请考虑不要为 phonenumber
和 dataplan
列设置别名 - 在这种情况下,别名只会造成困惑。您需要相应地更改 PHP 代码中的索引值。
关于php - 这个查询的错误在哪里?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19250737/