2016-11-06 23 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

Brilliant!どうもありがとうございます!最後の質問を1つお願いします。私は、クエリをテストし、私はエラーを取得します。これはクエリの後のコードの残りの部分です:$ 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"; 
関連する問題