2013-10-08 94 views
0

我今天从许多不同的方式攻击了这个,我没有想到显示我的数据的最佳方式是可以在一个表中显示单个查询。问题是我有三个查询,我试图结合,它不会很好。我觉得它很接近但显然不正确。此查询的错误在哪里?

$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>"; 

} 

问题是我想三列数据,我得到的只是一列所有数据

+0

那么究竟是什么问题? –

+0

您正在使用UNION。我相当肯定你想加入表格,但由于你没有说出问题所在,这只是一个猜测。 – andrewsi

回答

0

首先替换此行:

$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); 

通过

$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);" 
0

UNION向查询添加额外的行。看起来你只是想要多列。看看这个查询是否让你更接近;如果不是请出示一些示例数据和预期的结果:

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

另外,还要考虑走样phonenumberdataplan列 - 别名在这种情况下被搞乱的东西。您需要相应地更改PHP代码中的索引值。