2015-10-29 3 views
0

У меня есть таблица, которая содержит данные в этом формате.Как выбрать отдельные строки из таблицы с определенным условием?

+-----+----------+------------+------------+ 
| id | grade_id | student_id | subject_id | 
+-----+----------+------------+------------+ 
| 249 |  1 |   27 |   1 | 
| 250 |  1 |   27 |   2 | 
| 251 |  1 |   27 |   4 | 
| 252 |  1 |   28 |   1 | 
| 253 |  1 |   28 |   2 | 
| 254 |  1 |   28 |   4 | 
| 255 |  1 |   29 |   1 | 
| 256 |  2 |   29 |   2 | 
| 257 |  3 |   29 |   4 | 
+-----+----------+------------+------------+ 

Мне нужно все student_id s имеющие grade_id = 1 для всех subject_id, что запрос я буду использовать, чтобы получить student_id.

Мне нужно, чтобы результат запроса был таким?

student_id

27 
    28 
+1

Покажите нам ваш запрос. – ravi

+0

Чтобы использовать ORM, вам нужны модели. Вы также можете создавать модели для уже существующих таблиц. – cdvv7788

+0

Пожалуйста, не полностью меняйте часто задаваемые вопросы. Раньше вам также был нужен ответ для Django, который вы позже удалили. :/ – skbly7

ответ

1

В MySQL:

SELECT student_id FROM table WHERE student_id NOT IN (SELECT students_id FROM table WHERE grade_id != 1)

В Django:

from django.db.models import Q 
not_eligible = Model.objects.all().filter(~Q(grade_id = 1)) 
       .values('student_id').distinct() 
eligible = Model.objects.all().filter(~Q(student_id_in = not_eligible)) 
      .values('student_id').distinct()) 
# eligible -> all student_id 
Смежные вопросы