2015-10-29 54 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的grade_id = 1爲所有subject_id,我將用於獲取student_id的查詢。

我需要查詢的結果應該是這樣嗎?

student_id數據

27 
    28 
+1

向我們展示你的SQL查詢。 – 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 
相關問題