2016-11-11 32 views
0

兩張表question,answer,我需要爲特定用戶轉儲所有未解答的問題。在sqlYii2如何將where子句中的cascade select轉換爲activequery?

select * from question where question.user_id = user_id 
and (select count(*) from answer where answer.question_id = question.id) = 0 

但我怎麼能把這個命令來activequery?

Question::find()->where(['user_id' => user_id]) .... 

回答

1

用於爲給定用戶找到沒有答案的每個問題的活動查詢。

Question::find()->leftJoin('answer', 'answer.question_id=question.id') 
       ->where(['question.user_id' => $user_id]) 
       ->andWhere(['answer.id' => null) 
1

您的查詢可能會寫這樣

select * from question 
    inner join answer on answer.question_id = question.id 
    where question.user_id = user_id 
    group by question.id 
    having count(*) > 0 

和activeRecored你可以使用

Question::find()->innerJoin('answer', answer.question_id = question.id)-> 
     where(['user_id' => user_id])-> 
     groupBy('id')-> 
     having('having count(*) > 0')-> 
相關問題