2011-01-19 61 views
0

任何一個可以幫助我轉換這個查詢到CakePHP的發現聲明轉換查詢到CakePHP的發現聲明

SELECT 
    SUM(ISNULL(tg_prd_value,0)) as total,MAX(tblMarketingArea.mkt_Area_ID) as mkt_Area_ID,MAX(tblMarketingArea.mkt_Area) as mkt_Area 
FROM 
    tblTarget right outer join 
    tblMarketingArea on (tblMarketingArea.mkt_Area_ID = tblTarget.tg_area_id and tblTarget.tg_month = 1 and tblTarget.tg_year = 2011) 
where tblMarketingArea.isDeleted!=1 
GROUP BY 
    tblMarketingArea.mkt_Area_ID order by tblMarketingArea.mkt_Area_ID 

我有「目標」「MarketingArea」模式。(我知道的表名是不是根據cakephp慣例,但我必須使用這些名稱)。由於我使用的SQL Server我根據蛋糕convension創建的表同義詞

模型MarketingArea

class MarketingArea extends AppModel{ 
    var $name='MarketingArea'; 
    var $primaryKey='mkt_Area_ID'; 
} 

我已經試過這種結合

$this->bindModel(array(
     'hasMany' => array(
      'Target' => array(
       'foreignKey' => 'tg_area_id', 
       'conditions' => array(
        'tg_month' => 1, 
        'tg_year' => 2011 
        ) 
           ) 
         ) 
        ) 
       ); 
(marketing_area.php)

但我仍然面臨着與SUM(tg_prd_value)

advace的thankz。

回答

3

除非有一些特殊的原因使用find方法,否則我會簡單地創建一個模型方法並使用query()來執行SQL語句。如果月份和年份是參數,請確保它們是整數以避免SQL注入攻擊。