我有四个这样的表:
学年(id)
学生(id,schoolyear_id)
测试(ID)
年级(id,test_id,student_id,分数)
一个学生与一个schoolyear
(通过fk)相关联,一个成绩与一个test
和student
通过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/