2015-01-15 2 views
0

쿼리를 개선하려고합니다.DOCTRINE - DQL - 쿼리 개선 - NULL이 아닌 SELECT

나는이 테이블이 있습니다

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 

괜찮아요하지만 지금은 노력하고있어 이 쿼리를 향상시킵니다. 몇 가지 문제 ...

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

피곤이 있지만 어떻게 할 수

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

: 나는

결과는 그렇게해야 lang_code 열에 NULL 결과없이하지만, 동일한 작업을 수행 할 필요가 제발? 들으 :)

답변

1

당신은 (BTW이 일반 sql에서 또한 잘못입니다) 당신의 DQL에 조항의 잘못된 순서로이 - GROUP BYWHERE

후, 쿼리의 끝으로 이동합니다 이것보십시오 :

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

올바른 SQL 구문을 확인하려면 this을 확인하십시오.

+0

그것은 좋은 것 같습니다 :) thx 멋쟁이! – Zagloo