2013-07-01 5 views
0

지금 나는 <body> 태그 안에 내 .cfm 페이지에 다음 코드 한 다음 코드를 고려하시기 바랍니다 다음 쿼리에서 열려있는 연결의 비율표시 데이터는

<cfquery datasource = "xx.xx.x.xx" name="qSen"> 

SELECT (select count(*) 
     FROM sgemail) AS TOTAL_CONNECTIONS, 
     (SELECT count(*) 
     FROM sgemail 
     WHERE event_vc = "open") AS OPEN_CONNECTIONS, 
     (ROUND((SELECT OPEN_CONNECTIONS/(TOTAL_CONNECTIONS))*100)) AS "% OPEN" ; 
</cfquery> 


<cfquery datasource = "xx.xx.x.xx" name="qSen"> 

SELECT (select count(*) from sgemail) AS TOTAL_CONNECTIONS, 
(SELECT count(*) from sgemail where event_vc = "BOUNCE") AS BOUNCE_CONNECTIONS, 
(ROUND((SELECT BOUNCE_CONNECTIONS/(TOTAL_CONNECTIONS))*100)) AS "% BOUNCE" ; 
</cfquery> 

기본적으로 "% OPEN"와` "%의 BOUNCE는"연결 개방의 비율을 표시하고 데이터베이스에서 반송하는 데 사용됩니다.

<cfchart 
     format="png" 
     scalefrom="0" 
     scaleto="1200000" 
     pieslicestyle="solid"> 

     <cfchartseries 
      type="pie" 
      serieslabel="Website Traffic 2006" 
      seriescolor="blue" 
      query = "qSengrid" 
      valuecolumn="% OPEN" 

      itemcolumn="" 
      > 

    </cfchartseries> 
</cfchart> 

내 질문 : 위의 차트는 노란 색으로 하나의 원을 표시하는 것을

1) 건은 다음과 같이

나는 위의 <cfquery> 태그 아래에 다음과 같은 <cfchart> 태그를 포함했다 . 하나의 차트에 두 쿼리에 의해 검색된 정보를 표시하려고합니다. 예를 들어 %OPEN에 대한 값은 30이고 값은 %Bounce입니다. 전체 원형 차트를 만드는 다른 값을 반환하는 다른 쿼리도 있습니다. 을 100으로 설정했지만 두 개의 cfqueries 만 포함했습니다. 이 질문에 대한 간결함을 위해서. 더 진행하는 방법을 알려주십시오.

2) 또한 두 번째 쿼리 (여기서 내가 % Bounce 값을 얻었습니다)를 주석 처리했을 때 파이 차트의 원 옆에 %OPEN 값을 볼 수 있습니다. 그러나 위에서 설명한 <cfchart> (valuecolumn = %OPEN) 중 하나만 사용하여 쿼리를 실행할 때 원 옆에 값이 표시되지 않습니다.

위의 질문에 답하고 답변 할 수있는 질문이 있으면 알려주십시오.

답변

2

, 당신을 동일한 쿼리 이름을 재사용 사용하여

(코멘트에서) 이전 결과를 덮어 쓰는 경향이 큽니다. 또한, 그게 어떻게 <cfchartseries query="..."> 작동하지 않습니다.단일 쿼리를 허용합니다. 즉 모든 값이 동일한 쿼리에 포함되어야합니다.

별도의 쿼리를 사용해야하는 경우, 각 쿼리에 고유 한 이름과 값에 대한 사용 별도의 <cfchartdata> 태그 제공 :

<cfchart format="png"> 
    <cfchartseries type="pie"> 
     <cfchartdata item="% Open" value="#qTotalOpen.TotalNumber#"> 
     <cfchartdata item="% Bounce" value="#qTotalBounced.TotalNumber#"> 
     ... other values ... 
    </cfchartseries> 
</cfchart> 
+0

멋진 사람! 그것은 효과가 있었다. 따라서 chartdata 항목에는 쿼리 항목이 필요 없습니다. 나는 각 차트에 대해서만 그리고 그것을 하나의 차트에 유지하는 방법을 찾아 내려고 노력했다. – Tan

+1

오른쪽. 'cfchartdata'는 당신이 수동으로 차트를 만들 수 있도록 고안되었습니다. 따라서 "가치"와 "레이블"만 필요합니다. – Leigh

1

ColdFusion에 대해 잘 모르겠지만 동일한 결과 집합에 % Open% Bounce 값이 표시되는 것 같습니다.

<cfchartseries 
     type="pie" 
     serieslabel="Website Traffic 2006" 
     seriescolor="blue" 
     query = "qSengrid" 
     valuecolumn="thevalue" 
     itemcolumn="theitem" 
> 

:

theitem thevalue 
--------- -------- 
% OPEN   40 
% BOUNCE  23 

그런 <cfcchart>에서 마크 업 이런 식으로 뭔가를 갈 것입니다 : 마크 업 예제를 바탕으로, 나는 당신의 결과는 다음과 같이 보일 필요가있다 생각 (나는 열 이름을 만든) 그런 경우 (그리고 아무도 아직 답변을 게시되지 않았기 때문에 내가 여기 추측하고있어 기억) 경우, 첨부 된 쿼리는 다음과 같습니다

SELECT 
    CONCAT('% ', UPPER(sgemail.event_vc)) AS theitem, 
    COUNT(*)/tots.totconn AS thevalue 
FROM 
    sgemail, 
    (SELECT COUNT(*) AS totconn 
    FROM sgemail 
    WHERE event_vc IN ('open', 'bounce')) tots 
WHERE tots.totconn <> 0 
    AND sgemail.event_vc IN ('open', 'bounce') 
GROUP BY CONCAT('% ', UPPER(sgemail.event_vc)) 

Q를 uery는 event_vc 값의 하위 집합에 대한 백분율을 계산하고 있기 때문에 조금 복잡합니다. 또한 0으로 나누기 오류를 지키고 있습니다. 차트가 바로 카운트를 가지고 백분율로 변환 할 수있는 경우, "만을 계산"에 대한 쿼리는 많은 간단하다 :

SELECT 
    CONCAT('% ', UPPER(sgemail.event_vc)) AS theitem, 
    COUNT(*)/tots.totconn AS thevalue 
FROM sgemail 
WHERE sgemail.event_vc IN ('open', 'bounce') 
GROUP BY CONCAT('% ', UPPER(sgemail.event_vc))