你的表結構極不理想很多,但如果你必須使用你所擁有的,那麼這應該工作:
SELECT pass.name, pass.subject, pass.part, pass.grade, fail.part, fail.grade
FROM
(SELECT a.name, b.subject, b.part, a.grade
FROM Students a
INNER JOIN Tests b ON a.test_code = b.test_code AND b.part = 'a' AND a.grade > 50) pass
INNER JOIN (SELECT a.name, b.subject, b.part, a.grade
FROM Students a
INNER JOIN Tests b ON a.test_code = b.test_code AND b.part = 'b'
AND a.grade < 50) fail on pass.name = fail.name
否則,如果您有一定的靈活性,我建議此表的結構:
students (id, name) PRIMARY KEY (id)
results (studentid, test_code, grade) PRIMARY KEY (student_id, test_code)
Tests (test_code, subject, part) PRIMARY KEY (test_code)
這給你一些好處,包括只有在你的學生表每一個學生1行,也有超過1名學生具有相同名稱的能力(該ID是唯一)
不錯。你已經嘗試了什麼? –
請顯示樣本輸入表數據。 – OldProgrammer
你需要第三個表格,一個聯結表格,它建立學生和考試之間的多對多關係。 –