2016-11-06 3 views
1

SQL 쿼리의 출력에서 ​​중복 값을 제거하는 방법을 알고 싶습니다.SQL 쿼리에서 중복 값을 제거하는 방법

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

당신이 볼 수 있듯이이 쿼리 데이터가 오늘날의 날짜와 일치하는 데이터를 필터링 :

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

이 해당 쿼리의 출력은 다음과 같습니다

는 SQL 쿼리입니다. 동일한 사용자에 대해 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! 정말 고맙습니다! 마지막 질문 하나만 드릴까요? 쿼리를 테스트 한 결과 오류가 발생했습니다.다음은 나머지 코드입니다 : $ result = mysqli_query ($ conn, $ query); \t \t $ r = array(); \t \t 경우 ($에서 그 결과> 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"; 
관련 문제