2017-05-24 68 views
0

我有一個查詢:如何在yii2查詢中使用MAX函數?

​​

這是我的表:

enter image description here

我需要這樣的答案:

enter image description here

我嘗試這樣做:

$query = HireScreening::find()- 
      ->select(["hire_screening.screening_id","hs.resume_id", 
      "MAX(hs.created_date) AS 
      MaxDateTime","hs.screening_by","hsl.screening_level as 
      hr_level","hss.screening_status as 
      hr_status","hr.candidate_name","hsm.screening_mode as 
      hr_mode","hire_screening.created_date","hs.screening_date"]) 
      ->innerJoin('hire_screening as hs','hs.resume_id = 
      hire_screening.resume_id') 
      ->leftJoin('hire_screening_level as 
      hsl','hire_screening.screening_level = hsl.id') 
      ->leftJoin('hire_screening_mode as 
      hsm','hire_screening.screening_mode = hsm.id') 
      ->leftJoin('hire_screening_status as 
      hss','hire_screening.screening_status = hss.id') 
      ->leftJoin('hire_resume as 
      hr','hire_screening.resume_id=hr.resume_id') 
      //->where(['hire_screening.created_date = MaxDateTime']) 
      ->groupBy(['resume_id']); 
      //->having(['hire_screening.created_date' => 
      'hs.MaxDateTime']); 
      $query->orderBy(['created_date' => SORT_DESC]); 

但它沒有顯示答案。 我需要截然不同的resume_id與最新的創建日期。 sql查詢顯示正確答案。我想在我的搜索模型中編寫此查詢。請幫我把這個查詢轉換成yii2。

回答

1

如果有表MyTable,那麼你可以通過使用resume_id查詢simplier分組表:

SELECT 
    screening_id, 
    resume_id, 
    screening_by, 
    screening_date, 
    screening_level, 
    screening_mode, 
    screening_status, 
    reject_reason, 
    remarks, 
    created_by, 
    MAX(created_date) AS created_date 
FROM MyTable 
GROUP BY resume_id; 

使用簡化查詢有助於避免錯誤。您也可以使用查詢創建一個view或存儲procedure並從您的PHP代碼中調用此函數。