2016-11-06 64 views
1

我想知道如何從sql查詢的輸出中刪除重複值。如何從SQL查詢中刪除重複值

這是SQL查詢:

$query = "SELECT useraccount.Username, tariff.Name as tariffs, 
energyconsumption.ElecEnergy, useraccount.Username as User 
    FROM useraccount 
    INNER JOIN tariff 
ON useraccount.tariffs = tariff.id 
INNER JOIN energyconsumption 
ON energyconsumption.User = useraccount.id 
WHERE Date = CURRENT_DATE"; 

這是查詢的輸出:

{"results":[{"Username":"absc868","TariffName":"s1","ElecConsump":"2000"}, 
{"Username":"absc868","TariffName":"s1","ElecConsump":"1900"}]} 

正如你所看到的,查詢篩選出其中數據今天的日期相匹配的數據。我們有2個輸出給同一個用戶。資費名稱和用戶名的值相同,但能耗值不同,這很好。

我想達到以下的輸出:

= {"results":[{"Username":"absc868","TariffName":"s1","ElecConsump":"2000 +1900"} 


= {"results":[{"Username":"absc868","TariffName":"s1","ElecConsump":"3900"} 

可能有人點我的我怎麼能做到這一點的方向是什麼?

非常感謝您閱讀帖子並貢獻的人!

+0

你想總結這些數值還是想讓它們成爲'2000 + 1900'? – Dekel

+0

@Dekel嗨,是的,我想要的價值總和 – Mahbs

+1

因此,@scaisEdge的答案是你在找什麼。 – Dekel

回答

1

你應該使用和以及一組

$query = "SELECT useraccount.Username as Username, tariff.Name as TariffName, 
sum(energyconsumption.ElecEnergy) as ElecConsump 
    FROM useraccount 
    INNER JOIN tariff 
ON useraccount.tariffs = tariff.id 
INNER JOIN energyconsumption 
ON energyconsumption.User = useraccount.id 
WHERE Date = CURRENT_DATE 
GROUP BY useraccount.Username, tariff.Name as tariffs"; 

(你有表的列名的別名和對象屬性名之間的一些差異)

+0

輝煌!非常感謝!我能問你最後一個問題嗎?我測試了這個查詢,並發現一個錯誤。這是查詢後的其餘代碼:$ result = mysqli_query($ conn,$ query); \t \t $ r = array(); \t \t如果($ result-> NUM_ROWS){ \t \t \t \t \t \t而($行= mysqli_fetch_array($結果)){ \t \t \t \t array_push($ R,陣列( '用戶名'=> $行[ '用戶名'], \t \t \t \t 'TariffName'=> $行[ '關稅'], 'ElecConsump'=> $行[ 'ElecEnergy'] \t \t \t \t \t \t \t \t)); \t \t \t \t \t \t \t \t} \t \t \t \t } \t回波json_encode(陣列( '結果'=> $ R)); \t 錯誤在這一行:if($ result-> num_rows) – Mahbs

+0

@Mahbs,如果它正確(使用左側的V),您應該接受此答案。 – Dekel

+0

@Mahbs好,如果我的回答是正確的,請將其標記爲已接受...看到這裏如何 http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work – scaisEdge

2

可以使用group_concat功能:

$query = "SELECT useraccount.Username, tariff.Name as tariffs, 
GROUP_CONCAT(energyconsumption.ElecEnergy SEPARATOR ' +') 
    FROM useraccount 
    INNER JOIN tariff 
ON useraccount.tariffs = tariff.id 
INNER JOIN energyconsumption 
ON energyconsumption.User = useraccount.id 
WHERE Date = CURRENT_DATE 
GROUP BY useraccount.Username, tariff.Name";