2015-01-15 2 views
0

Я пытаюсь улучшить свой запрос.DOCTRINE - DQL - Улучшить запрос - SELECT без NULL

У меня есть эта таблица:

id lang_code language 
    1 fr-1  french 
    2 fr-2  french  
    3 en-1  english  
    4 en-2  english  
    5 NULL  espagnol 
    6 NULL  chineese 

Я сделал этот запрос

$langues = $this->getDoctrine()->getManager() 
->createQuery('SELECT DISTINCT c FROM AVCMediasBundle:Langue c GROUP BY c.language') 
->getResult() 
; 

У меня есть этот результат и это нормально на данный момент

id lang_code language 
    2 fr-2  french  
    4 en-2  english  
    5 NULL  espagnol 
    6 NULL  chineese 

Но теперь я пытаюсь для улучшения этого запроса. Мне нужно сделать то же самое, но без NULL результата в lang_code колонке

Результат должен быть таким:

id lang_code language 
    2 fr-2  french  
    4 en-2  english  

Я устал, что, но некоторые проблемы ...

$langues = $this->getDoctrine()->getManager() 
    ->createQuery('SELECT DISTINCT c FROM AVCMediasBundle:Langue c GROUP BY c.language , WHERE c.langCode IS NOT NULL') 
    ->getResult() 
    ; 

Как я могу делайте пожалуйста? ТНХ :)

ответ

1

Вы имеете неправильный порядок пунктов в вашем DQL (кстати это было бы также неправильно в простом sql) - GROUP BY должен идти до конца запроса, после WHERE

Попробуйте это:

$langues_dispo_google_speech = $this->getDoctrine()->getManager() 
    ->createQuery('SELECT DISTINCT c FROM AVCMediasBundle:Langue c WHERE c.langCode IS NOT NULL GROUP BY c.language') 
    ->getResult() 
    ; 

this Проверьте, чтобы увидеть правильный синтаксис SQL

+0

Вроде бы хорошо :) ТНХ чувак! – Zagloo

Смежные вопросы