2016-03-19 164 views
1

我做了一個查詢,應該爲stud_gender ='M',stud_yrGroup ='9'和event_id ='1'的特定需求輸出stud_fname,stud_sname,result_studpoints,result_position和studevent_result。MySQL-從不同表中選擇數據

這是查詢:

SELECT stud_fname, stud_sname, result_studpoints, result_position, studevent_result FROM students 
INNER JOIN result 
WHERE stud_gender = 'M' 
AND stud_yrgroup = '9' 
AND result.stud_id IN (SELECT students.stud_id FROM result WHERE event_id = '1'); 

,但它不會顯示正確的輸出。

行Sam Cro不應該輸出,因爲他沒有做event_id ='1'。 如何修復我的查詢,以便根據所述要求輸出正確的數據。

在此先感謝。

回答

1

在你的子查詢中,選擇students.stud_id而不是結果,它是你爲事件ID 1選擇的表格。當你加入時,最好使用on子句而不是在where子句。一般來說,我會修改查詢如下。

SELECT stud_fname, 
     stud_sname, 
     result_studpoints, 
     result_position, 
     studevent_result 
FROM 
    students s 
     INNER JOIN 
    result r on 
    s.stud_is = r.stud_id 
WHERE 
    stud_gender = 'M' 
AND stud_yrgroup = '9' 
AND r.event_id = '1'; 

您也可以將子查詢中的結果表更改爲學生表以獲得正確的映射,但我會建議不要這樣做。

+0

謝謝,查詢工作! :) – SubZero