我有两个 mysql 表,其中包含学生和学校科目,如下所示:
科目
id | name
=================
1 | History
2 | English
3 | Science
4 | Geography
学生
id | name
=================
1 | Sergey
2 | Dmitriy
3 | Vladislav
第三个表在 Student 和 Subjects 表之间建立了多对多的关系,并且还具有标记列:
分数
id | student_id | subject_id | mark
==========================================
1 | 1 | 2 | 3
2 | 2 | 2 | 5
3 | 3 | 3 | 4
4 | 1 | 4 | 5
5 | 3 | 4 | 3
6 | 2 | 3 | 4
7 | 3 | 2 | 3
8 | 1 | 1 | 4
目标是构建一个多维数组,最终如下所示。如果没有这样的学生和学科匹配,它必须在“mark”键中返回“null”值。所以它应该有 3 个学生和 4 个科目的 12 个元素(3 乘以 4)。
我尝试了这个 sql 查询,但它不返回具有“null”值的记录,而是只返回来自“Marks”表的记录:
SELECT marks.id AS id,
students.name AS student,
marks.mark AS mark,
subjects.name AS subject
FROM students
LEFT OUTER JOIN marks ON students.id = marks.student
LEFT OUTER JOIN subjects ON marks.subject = subject.id
所需数组:
Array
(
[
"id" => 1,
"student" => "Sergey",
"subject" => "History",
"mark" => 4,
],
[
"id" => 2,
"student" => "Sergey",
"subject" => "English",
"mark" => 3,
],
...
[
"id" => 9,
"student" => "Vladislav",
"subject" => "History",
"mark" => null,
],
...
[
"id" => 12,
"student" => "Vladislav",
"subject" => "Geography",
"mark" => 3,
],
)
有谁知道如何做到这一点?谢谢你,希望你能帮助我。
慕工程0101907
jeck猫
慕尼黑的夜晚无繁华
www说
随时随地看视频慕课网APP