我有四个这样的表:


学年(id)
学生(id,schoolyear_id)
测试(ID)
年级(id,test_id,student_id,分数)


一个学生与一个schoolyear(通过fk)相关联,一个成绩与一个teststudent通过fk的相关联。

我希望无论返回哪个特定学年的所有学生,如果存在,请加入该学生的考试score以及来自学生表的所有其他字段。如果不是,则score字段应为null。这是我所拥有的:

SELECT *, `student`.`id` as `studentid`
FROM `student`
LEFT JOIN `grade` ON `grade`.`student_id` = `student`.`id`
WHERE `student`.`schoolyear_id` = ?


我当前的语句中没有任何内容可以告诉它特定的测试,但这就是我想要的。

最佳答案

SELECT *, `student`.`id` as `studentid`, t.*
FROM `student`
LEFT JOIN `grade` ON `grade`.`student_id` = `student`.`id`
LEFT JOIN `test` t ON `t`.`id` = `grade`.`test_id`
WHERE `student`.`schoolyear_id` = ?
and test_id = ?

关于php - 加入特定 key 不起作用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27672309/

10-13 09:05