2017-11-30 4 views
0

2つのクエリの割合を調べようとしているのに、別の場所にエコーするセッションの値を保持したいという問題があります。私に説明させてください。SQLサーバーのエコー値とパーセンテージPHPのユニオンクエリー

私の最初のユニオンクエリは、値E.Gを返します。 100

$sql1 = "select COUNT(*) From 
(select inc.INCIDENT_NUMBER as TICKET 
From dbo.HELP_DESK as inc 
Where inc.STATUS < 3 
and inc.ASSIGNED_GROUP = 'Scheduling' 
UNION ALL 
SELECT chg.INFRASTRUCTURE_CHANGE_ID AS TICKET 
FROM dbo.CHANGE as chg 
WHERE chg.CHANGE_REQUEST_STATUS NOT IN (1,4,5,8,9,10,11,12) 
and chg.ASGRP in = 'Scheduling') num1"; 

私はそのようにセッション値として結果をエコーし​​たい:これまで

$SCH = sqlsrv_query($conn,$sql1); 
if($SCH === false) { 
    die(print_r(sqlsrv_errors(), true)); 
} 
while($Row = sqlsrv_fetch_array($SCH, SQLSRV_FETCH_NUMERIC)) { 
$_SESSION['$SCH'] = $Row[0]; 
} 

とても良いです。しかし、私は2番目のユニオンクエリーに基づいてパーセンテージを計算したいと思います。

$sql2 = "select COUNT(*) From 
(select inc.INCIDENT_NUMBER as TICKET 
From dbo.HELP_DESK as inc 
Where inc.STATUS < 4 
and inc.ASSIGNED_GROUP = 'Scheduling' 
UNION ALL 
SELECT chg.INFRASTRUCTURE_CHANGE_ID AS TICKET 
FROM dbo.CHANGE as chg 
WHERE chg.CHANGE_REQUEST_STATUS < 9 
and chg.ASGRP = 'Scheduling') num2" 

例として、2番目の値は250です。だから私はパーセンテージを計算しようとしています。 (100/250)* 100 = 40%

function percentage ($sql1,$sql2) 
{ 
    return ($sql1/$sql2) * 100; 
} 
Echo percentage 

最後のビットは何も表示されず、空白の画面が戻されます。おそらくこれを行うより簡単な方法があり、私の相対的なPHPの新人の状態を与え、私はおそらく一度にいくつかの関数を混同しています。

私はそれが動作するように少し助けていただきたいと思います。読んでいただきありがとうございます。

答えて

0

パーセントの問題を解決するために管理され、別々のセッション値を出力できます。

select 
    s.activeCount * 100/s.totalCount as Percentage 
    FROM 
(select activecount = (select COUNT(*) From 
(select inc.INCIDENT_NUMBER AS TICKET 
From dbo.HELP_DESK as inc 
Where inc.STATUS < 3 
and inc.ASSIGNED_GROUP = 'Scheduling' 
UNION ALL 
SELECT chg.INFRASTRUCTURE_CHANGE_ID AS TICKET 
FROM dbo.CHANGE as chg 
WHERE chg.CHANGE_REQUEST_STATUS NOT IN (1,4,5,8,9,10,11,12) 
and chg.ASGRP = 'Scheduling') num), 
totalCount = (select COUNT(*) From 
(select inc.INCIDENT_NUMBER AS TICKET 
From dbo.HELP_DESK as inc 
Where inc.STATUS < 4 
and inc.ASSIGNED_GROUP = 'Scheduling' 
UNION ALL 
SELECT chg.INFRASTRUCTURE_CHANGE_ID AS TICKET 
FROM dbo.CHANGE as chg 
WHERE chg.CHANGE_REQUEST_STATUS < 9 
and chg.ASGRP = 'Scheduling') num)) s