2016-11-18 44 views
2

我無法在我有的symfony2項目中得到這個查詢。如何在DQL中選擇具有MAX(列值)的行?

我表:

id course datetime numOrden 
---|-----|------------|-------- 
1 | 1º | 04/11/2016 | 1 
2 | 2º | 04/11/2016 | 2 
5 | 3º | 04/11/2016 | 5 
3 | 4º | 03/11/2016 | 4 
4 | 5º | 03/11/2016 | 3 

我需要得到其值在「numOrden」一欄是最大的過程(在這種情況下,將第3個療程)。爲此,我已經使用在Doctrine2以下查詢:

public function findCourse() 
{ 
    return $this->getEntityManager()->createQuery(
    'SELECT c FROM BackendBundle:Curso c WHERE c.numOrden in (SELECT max(c.numOrden) FROM BackendBundle:Curso)') 
    ->getResult(); 
} 

或者

public function findCourse() 
{ 
    return $this->getEntityManager()->createQuery(
    'SELECT c FROM Bundle:Course c WHERE c.numOrden=(SELECT max(c.numOrden) FROM Bundle:Course)') 
    ->getResult(); 
} 

但它顯示了以下錯誤:

[Syntax Error] line 0, col -1: Error: Expected Doctrine\ORM\Query\Lexer::T_CLOSE_PARENTHESIS, got end of string. (500 Internal Server Error) 

回答

1

嘗試使用另一個別名子選擇爲:

public function findCourse() 
{ 
    return $this->getEntityManager()->createQuery(
    'SELECT c FROM Bundle:Course c WHERE c.numOrden=(SELECT max(co.numOrden) FROM Bundle:Course co)') 
    ->getResult(); 
} 

Hope thi thi s幫助

+1

這就是問題所在。我以前嘗試過相同的別名,但我沒有嘗試另一個別名。謝謝!! – Joseph

+0

嗨@Joseph歡迎您! – Matteo

相關問題