2017-05-24 3 views
0

Ich habe eine Abfrage:Wie MAX-Funktion in yii2 Abfrage verwenden?

SELECT hs.* 
    FROM hire_screening hs 
    INNER JOIN 
    (SELECT resume_id, MAX(created_date) AS MaxDateTime 
    FROM hire_screening 
    GROUP BY resume_id) hire_screening 
    ON hs.resume_id = hire_screening.resume_id 
    AND hs.created_date = hire_screening.MaxDateTime 

Das ist mein Tisch ist:

enter image description here

Ich brauche die Antwort wie folgt aus:

enter image description here

ich das versucht:

$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]); 

Aber es zeigte nicht die Antwort. Ich brauche die verschiedenen resume_ids mit dem zuletzt erstellten Datum. Die SQL-Abfrage zeigt die richtige Antwort. Ich möchte diese Abfrage in meinem Suchmodell schreiben. Bitte hilf mir diese Anfrage in yii2 zu konvertieren.

Antwort

1

Wenn es eine Tabelle ist MyTable, dann können Sie simplier Abfrage verwenden, um die Tabelle nach resume_id Gruppierung:

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; 

Abfrage helfen Verwendung vereinfacht einen Fehler zu vermeiden. Sie können auch eine view oder eine gespeicherte procedure mit der Abfrage erstellen und diese aus Ihrem PHP-Code aufrufen.