2013-10-08 68 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代碼中的索引值。