2013-11-22 3 views
1

다음 SQL 쿼리가 있습니다.이 구문을 GORM 스타일로 grails로 다시 작성할 수 있는지 궁금 해서요. HQL을 쿼리하는 다른 프로그래밍 스타일이나 기준을 사용하여 가능합니다.grails와 gorm을 사용하여 중첩 선택 수행

SELECT count(USERID) as Result FROM Answer 
WHERE USERID IN 
     (SELECT USERID FROM Answer 
     WHERE USERID IN (SELECT USERID FROM Answer 
      WHERE USERID IN (SELECT USERID FROM Answer WHERE QID=1 AND ATxt='30') AND 
     QID=2 AND ATxt='M') AND QID=3 AND ATxt='6') AND QID=4 AND ATxt='160' 

답변

0

이 중첩 기능을 사용하는 대신 or을 사용할 수 있습니다. 도메인 클래스를 모른 채, 나는 당신이 뭔가가 있으리라 믿고있어 :

class User { 
} 

class Question { 
} 

class Answer { 
    static belongsTo = [user: User, question: Question] 
} 


def question2 = Question.findById(2) 
def question3 = Question.findById(3) 
def question4 = Question.findById(4) 

Answer.withCriteria { 
    projections { 
    count('user') 
    } 
    or { 
    and { 
     eq('question', question2) 
     eq('aTxt', 'M') 
    } 
    and { 
     eq('question', question3) 
     eq('aTxt', '6') 
    } 
    and { 
     eq('question', question4) 
     eq('aTxt', '160') 
    } 
    } 
} 
+0

내가 질문 목록을 사용하고 그들을 반복 또는 수를 {} 모든 및 {EQ} 부분을 구성? – AlexCon

+0

할 수 있습니다. 시도 해봐 :) – rcgeorge23