2012-06-09 19 views
0

試圖做一個計數這些線路上的計數(engineerName)AS engineerCount, 計數(managerName)作爲managerCount, 計數(isContractor)作爲contractorCount 但它一直返回都是一樣的號碼三。所以我試圖添加一個Where爲每個,示例計數(isContractor,其中isContractor ='是')作爲contractorCount但獲取錯誤請幫助,謝謝。計數和左連接不工作的權利

<?php 


     clASs EfficiencyController extends DooController 
     { 


     function getEfficiency(){ 

     include './protected/config/db.conf.php'; 
     Doo::db()->setDb($dbconfig, 'local_network'); 


     $Vendor = ($_SERVER['REQUEST_METHOD'] == "POST") ? $_POST['Vendor'] : $_GET['Vendor']; 
     $date = ($_SERVER['REQUEST_METHOD'] == "POST") ? $_POST['date'] : $_GET['date']; 
     $level = ($_SERVER['REQUEST_METHOD'] == "POST") ? $_POST['level'] : $_GET['level']; 
      switch($level) { 
      case "Region": 
      case "area": 
       $Market99=""; 
       break; 
      default: 
       $Market99=$level; 
       break; 

     } 
    { 
     // 
     // LUCENT,NORTEL 
     // 


     $query = " SELECT 
        DayKey, 
       Market99, 
       Region, 
       areaName, 
       Sum(Total_Sites) as totalCount, 
       Max(engineerCount) AS engineerCount, 
       Max(managerCount) AS managerCount, 
       Max(contractorCount) AS contractorCount, 
       SC_Type, 
       Sum(Total_Carriers), 
       Sum(Total_Sectors), 
       Vendor 
       FROM 
       network.envEquipSummaryConfig a 
      Left Join 
      (SELECT 
       market, 
        areaName, 
        COUNT(engineerName) AS engineerCount, 
        Count(managerName) as managerCount, 
        Count(isContractor) as contractorCount 
      FROM 
       employee.employees 
      GROUP BY market 
      ORDER BY COUNT(market) DESC) b ON a.Market99 = b.market 
      Where 
      a.DayKey <= \"$date\" and a.Vendor = \"$Vendor\" 
      Group By Market99 asc"; 


      switch($level) { 
       case "region": 
         $query = $query. " order by region ASC"; 
         break; 
         case "area": 
         $query = $query. " order by areaName ASC"; 
         break; 
       default; 
         $query = $query. " order by Market99 ASC"; 
         break; 

      } 

     } 
     //echo $query; exit;  

     $this->setContentType('xml'); 
     $result = Doo::db()->fetchAll($query); 





     printf("<root>\n"); 
     if(count($result) > 0) 
     foreach($result AS $row) { 


        printf("\t<data>\n"); 
       printf("\t\t<date>%s</date>\n",$row["DayKey"]); 
       printf("\t\t<vName>%s</vName>\n",$row["Vendor"]); 
       printf("\t\t<location>%s</location>\n",$row["Market99"]); 
       printf("\t\t<toCount>%s</toCount>\n",$row["totalCount"]); 
       printf("\t\t<enCount>%s</enCount>\n",$row["engineerCount"]); 
       printf("\t\t<mnCount>%s</mnCount>\n",$row["managerCount"]); 
       printf("\t\t<cnCount>%s</cnCount>\n",$row["contractorCount"]); 


       printf("\t</data>\n"); 

     } 
     printf("</root>\n"); 

    } 
} 

?> 
+0

如果你的問題是關於SQL的,你可以編輯它來刪除所有的PHP噪聲,並用表格模式,一些示例數據和你試圖獲得的輸出替換它。您也可以比「獲取錯誤」更具體,因爲我們無法從這裏看到您的屏幕,也不知道「錯誤」的含義。試圖幫助你會更有用,並且可能會讓你更快得到答案。 –

回答

0
SELECT 
    market, 
    areaName, 
    COUNT(engineerName) AS engineerCount, 
    Count(managerName) as managerCount, 
    Count(isContractor) as contractorCount 
FROM 
    employee.employees 
GROUP BY market 

應該

Group By market,areaName在猜測。

這就是你所能看到的,因爲你沒有提供有用的信息。