안녕하세요. mysql을 쿼리하고 json 인코딩 및 그래프로 데이터 목록을 검색하는 약간의 문제가 있습니다 (예 : 금액 대 날짜 축). 그러나 SQL 올바르게 데이터가없는 쿼리 데이터의 날짜를 반환하지 않습니다. 그래서 그래프에는 날짜가 없습니다.값으로 다차원 배열 합치기
나는 여기에서 어떤 사람들은 공백을 채우는 데에만 다른 테이블을 만드는 작업을 교묘히 읽었다. 이것은 나를위한 선택 사항이 아닙니다.
쿼리에 모든 날짜의 배열을 만드는 솔루션이 있습니다.
다른 사람이 내 다차원 쿼리 결과 배열을 압축 할 수있는 방법을 제안 할 수 있습니까? 잘하면 영리한 foreach의 수단으로.
또는 공백 날짜를 채울 수 있는지 확실하지 않은 SQL 함수가 있습니까?
SELECT SQL_CALC_FOUND_ROWS Date, SUM(call_answer) AS call_answer, SUM(call_busy) AS call_busy, SUM(call_noanswer) AS call_noanswer, SUM(call_notrec) as call_notrec
FROM (
SELECT * FROM (
SELECT substring(dateCreated, 1,10) AS Date, COUNT(id) as call_answer, 0 as call_busy, 0 as call_noanswer, 0 as call_notrec
FROM cdr
WHERE (company = '8346767432431') AND (dateCreated >= '2012-10-16') AND (dateCreated <= '2012-11-16') AND dialStatus = 'NORMAL_CLEARING' GROUP BY Date)
AS t_0
UNION
SELECT * FROM (
SELECT substring(dateCreated, 1,10) AS Date, 0 as call_answer, COUNT(id) as call_busy, 0 as call_noanswer, 0 as call_notrec
FROM cdr
WHERE (company = '8346767432431') AND (dateCreated >= '2012-10-16') AND (dateCreated <= '2012-11-16') AND dialStatus = 'USER_BUSY' GROUP BY Date)
AS t_1
UNION
SELECT * FROM (
SELECT substring(dateCreated, 1,10) AS Date, 0 as call_answer, 0 as call_busy, COUNT(id) as call_noanswer, 0 as call_notrec
FROM cdr
WHERE (company = '8346767432431') AND (dateCreated >= '2012-10-16') AND (dateCreated <= '2012-11-16') AND (dialStatus = 'ORIGINATOR_CANCEL' OR dialStatus = 'NO_USER_RESPONSE') GROUP BY Date)
AS t_2
UNION
SELECT * FROM (
SELECT substring(dateCreated, 1,10) AS Date, 0 as call_answer, 0 as call_busy, 0 as call_noanswer, COUNT(id) as call_notrec
FROM cdr
WHERE (company = '8346767432431') AND (dateCreated >= '2012-10-16') AND (dateCreated <= '2012-11-16') AND (dialStatus = 'UNALLOCATED_NUMBER' OR dialStatus = 'INVALID_NUMBER_FORMAT') GROUP BY Date)
AS t_3
)
AS t_total
GROUP BY Date;
그래서 이미 상당히 지저분 : 같은
내 쿼리는 현재 보인다.