2013-05-30 5 views
0

Допустим, у нас есть модель Answer со следующими данными:Сравнение нескольких ответов с несколькими значениями

pic_id | gender | is_nude | has_advertisement 
2530  | female | 0  | 1 
2530  | male | 1  | 0 
2530  | male | 1  | 0 
2530  | male | 0  | 1 
2530  | male | 1  | 0 

Как я могу получить 3 соглашаясь ответы на все поля (gender, is_nude и has_advertisement) или nil если их меньше?

ответ

1

Это запрос агрегации. Ниже дается вам все «группы» ответов с их подсчетов:

select gender, is_nude, has_advertisement, count(*) as NumAnswers 
from Answers 
group by gender, is_nude, has_advertisement 

Если вы хотите только те, которые имеют точно 3 спички, чем добавить пункт:

having NumAnswers = 3 

Если вы хотите один комплект с наибольшим, а затем добавить:

order by NumAnswers desc 
limit 1 
Смежные вопросы