2016-12-30 59 views
2

符合條件的學生,我想獲得結果SQL查詢錯誤擺脫表

  1. subject應該是PHY或CHE和last_mark應刨絲器超過74
  2. 隨着條件1,如果再失敗total_gpa應刨絲器比2.4125
  3. 反正total_gpa應該比1.5000刨絲器爲所有

我使用的查詢,如下所示:

SELECT person_id,name,total_gpa,status 
FROM data_table 
WHERE subject='PHY' | 'CHE' 
    AND last_mark>74 OR total_gpa >2.4125 OR total_gpa > 1.5000 

在這裏我知道我的查詢是完全錯誤的,total_gpa >2.4125 OR total_gpa > 1.5000是沒有意義的。但我不能寫一個查詢來解決我的問題,有人請幫助我嗎?

+0

請不要使用無關的標記。我已將[tag:php]移除,因爲它與您的問題無關。 –

回答

4

您要求的一些條件在查詢中選擇行。

1.條件1

subject應該是PHY或CHE和last_mark應刨絲器比74所以查詢想是這樣

(subject='PHY' OR subject='CHE') AND last_mark > 74 

因爲,你要(TRUE OR FALSE) AND TRUE = 'TRUE'(FALSE OR TRUE) AND TRUE = 'TRUE' 。所以那個支架是需要的。

2.條件2

隨着條件1,如果失敗,則total_gpa應磨碎器比2.4125。所以你要檢查是否Condition 1 OR Condition 2。因此查詢想是這樣

((subject='PHY' OR subject='CHE') AND last_mark > 74) OR total_gpa > 2.4125 

3.條件3

反正total_gpa應該比1.5000所有刨絲器。所以你正在檢查所有應該有total_gpa > 1.5000的學生。所以查詢想要像(ANY CONDITION) AND total_gpa > 1.5000

(((subject='PHY' OR subject='CHE') AND last_mark > 74) OR total_gpa > 2.4125) AND total_gpa > 1.5000 

所以最終的查詢想是這樣的一個之後,

SELECT person_id,name,total_gpa,status 
FROM data_table 
WHERE 
(((subject='PHY' OR subject='CHE') AND last_mark > 74) OR total_gpa > 2.4125) 
AND total_gpa > 1.5000 
+0

完美的描述,謝謝你的努力。我明白了 – user7356399

1

你需要用括號內的東西:

SELECT person_id,name,total_gpa,status 
FROM data_table 
WHERE total_gpa > 1.5000 AND (((subject='PHY' OR subject = 'CHE') 
AND last_mark>74) OR total_gpa >2.4125)