2017-09-02 88 views
-1

我想選擇沒有失敗成績的學生。對普通學生和非普通學生進行排序

Stud_id grade_1 grade_2 grade_3 RATE 
    123  1.5  3.00  2.00 regular 
    234  2.00  1.50  5.00 irregular 
    567  3.00  2.00  2.00 regular 

select COUNT(stud_id)WHERE grade BETWEEN 1 AND 3 AND NOT not grade IN(0,5)。

我得到所有普通學生的代碼是這樣的。

SELECT COUNT(DISTINCT stud_id FROM grade 
WHERE grade BETWEEN 1 AND 3 AND stud_id ='$student') 

但我的問題在這裏已經失敗等級也會算,因爲他也傳給其他年級學生。

Sample mysql picture

,你可以在圖片中看到的學生與ID =「67453432」應該只將與「常規」狀態出現,因爲他不具有任何失敗年級學生。而另一名學生因爲有1個或更多失敗分數而顯示爲「不規則」。

的結果應該是這樣的

EXAMPLE ONLY!!! 
    if grade BETWEEN 1 AND 3 AND Dont have 0.00 OR 5.00 = REGULAR 
    BUT if GRADE BETWEEN 1 AND 3 AND HAVE 0.0 OR 5.00 = IRREGULAR 

    Stud_ID RATE 
    67453432 REGULAR 
    123  REGULAR 
    234  IRREGULAR 
    567  REGULAR 

回答

0

您可以通過下面的查詢得到了不規則的學生:

SELECT stud_id, 'Irregular' 
FROM students 
WHERE grade IN (0,5); 

和普通學生通過下面的查詢:

SELECT stud_id, 'Regular' 
FROM students 
WHERE grade BETWEEN 1 AND 3 
AND stud_id NOT IN (
    SELECT stud_id 
    FROM students 
    WHERE grade IN (0,5) 
); 

現在,你可以用UNION這兩個查詢來得到結果,例如:

SELECT stud_id, 'Irregular' 
FROM students 
WHERE grade IN (0,5) 

UNION 

SELECT stud_id, 'Regular' 
FROM students 
WHERE grade BETWEEN 1 AND 3 
AND stud_id NOT IN (
    SELECT stud_id 
    FROM students 
    WHERE grade IN (0,5) 
); 
+0

OH MY GOD!哦,我的上帝! IVE正在爲此搜索並進行查詢!非常感謝你!!!我如何給這百萬喜歡? –

+1

@MikeAhrenRances你可以接受答案,如果t幫助你.. –

+0

是的!有用!謝謝你一百萬次! :) 很有幫助! –