2013-11-22 13 views
1

我有以下SQL查詢,我想知道是否可以使用grails,可能使用標準,where或其他編程風格查詢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