0

我有这三个查询,我需要合并为一个。

$sql = "SELECT SUM(datamb) AS value_sum FROM maindata GROUP BY phonenumber";



$sql1 = "select dataplan as currentplan from maindata GROUP BY phonenumber";



$sql2 = "SELECT DISTINCT phonenumber AS value_sum1 FROM maindata";

所以我可以像这样在三列中显示它们:

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["phonenumber"] . "</b></td> ";  
echo "</TABLE>"; 

}

我使用了 UNION,它只制作了一个大列,其中所有数据都正确接近,但我需要它们全部显示在一个表中的三列中。谢谢你的任何想法,如果你认为我应该打自己的脸,已经完成了:)

4

2 回答 2

2

使用GROUP BY关键字创建不同的记录并对剩余值求和。

SELECT   phonenumber,
         dataplan AS currentplan,
         SUM(datamb) AS value_sum
FROM     maindata
GROUP BY phonenumber, dataplan;

此查询将为您提供电话号码和数据计划的唯一组合,并将汇总datamb这些不同组中的字段。这是学习GROUP BY关键字的好习惯,这对这种计算非常有用。

编辑:当您看到 时DISTINCT,这暗示您也可以GROUP BY使用该字段。这意味着该列或列组中可能存在重复值。确保为该特定字段组定义了一个键,其顺序与ORDER BY子句相同,以实现最大效率。

于 2013-10-08T15:25:15.617 回答
-1

$sql1 中的非法分组依据

请自行了解 group by 的使用。

http://dev.mysql.com/doc/refman/5.0/en/group-by-extensions.html

查询将使用非法分组:

select 
SUM(datamb) AS value_sum, 
dataplan as "first plan row value in this table for this phone number",
phonenumber AS value_sum1 
FROM maindata 
group by phonenumber

或没有:

select 
SUM(datamb) AS value_sum, 
dataplan as currentplan ,
phonenumber AS value_sum1 
FROM maindata 
group by phonenumber, dataplan
于 2013-10-08T15:34:39.670 回答