Mysql 从表中获取所有记录,如果存在,则从其他表中获取与其相关的信息
我有三个表(学生、小组、科目)和另外两个表作为桥梁(弱)表,用于连接学生和其他两个表(学生组、学生科目)。类似于:Mysql 从表中获取所有记录,如果存在,则从其他表中获取与其相关的信息,mysql,sql,Mysql,Sql,我有三个表(学生、小组、科目)和另外两个表作为桥梁(弱)表,用于连接学生和其他两个表(学生组、学生科目)。类似于: +-----+----------------+ +-----+-----------+ +-----+-----------+ | id | student_name | | id |group_name | | id |course_name| +-----|---------+------| +-----|-----------+
+-----+----------------+ +-----+-----------+ +-----+-----------+
| id | student_name | | id |group_name | | id |course_name|
+-----|---------+------| +-----|-----------+ +-----|-----------+
| 1 | stunet 1 | |1 | g1 | |1 | c1 |
| 2 | stuent 2 | |2 | g2 | |2 | c2 |
| 3 | stuent 3 | |3 | | |3 | |
+-----+---------+------+ +-----+-----------+ +-----+-----------+
+------------+-----------+ +------------+------------+
| student_id | group_id | | stuent_id | course_id |
+------------+-----------+ +------------+------------+
| 1 | 1 | | 1 | 2 |
| 2 | 2 | | 3 | 1 |
| | | +------------+------------+
+------------+-----------+
我想要的是:显示所有学生(无论他们是否被分配到组,是否注册科目)和科目和组
+-----+---------+-----------+
| student | group | deleted |
+---------|-------+---------|
|student 1| g1 |c2 |
|student 2| g2 | |
|student 3| |c1 |
+---------+-------+---------+
我之前的查询只显示分配给某个组并注册某个科目的学生
select students.*
groups.group_name,
modules.module_name
from students
JOIN students_groups ON students.id = students_groups.student_id
JOIN groups ON students_groups.group_id = groups.id
JOIN students_modules ON students.id = students_modules.student_id
JOIN modules ON students_modules.module_id = groups.id
+-----+---------+-----------+
| student | group | deleted |
+---------|-------+---------|
|student 1| g1 |c2 |
+-----+---------+-----------+
使用左外部联接而不是联接:
Select
std.studentname,
grp.groupname,
crs.coursename
FROM test.student std
LEFT OUTER JOIN test.stu_grp_brg sgb
on sgb.student_id=std.id
left outer join test.group grp
on sgb.group_id=grp.id
left outer join test.stu_course_brg scb
on scb.student_id=std.id
left outer join test.course crs
on crs.id=scb.course_id
非常感谢,我试图找到一些关于外部连接的资源,但是我找不到,你知道任何网站吗?请解释清楚,谢谢。我会尝试以下网站之一获取更多信息。如果你在谷歌上搜索“mysql加入”,你也会找到其他人。当我学习时,维恩图的可视化非常有用。如果你需要一些快速的东西,看看链接。使用易于理解的维恩图进行解释: