在大学数据库中,我在学生和他们注册的模块之间建立了多对多关系:使用状态<的桥接表/strong>.
桥接表status具有多字段主键(使用student和module的唯一组合;stud_id和mod_id)
但是,当从旨在列出所有这些数据的常规选择查询返回数据时:
SELECT status.stud_id, student.fname, student.sname, status.mod_id, modle.mtitle, status.grades
FROM status
INNER JOIN modle
ON status.mod_id=modle.mod_id
INNER JOIN student
ON status.stud_id=student.stud_id
GROUP BY status.stud_id
查询不会考虑学生可能拥有许多模块,并且只会将学生显示为具有单个模块。
最佳答案
为什么使用GROUP BY status.stud_id
?这就是为什么您只有一个学生结果的原因。
我在您的查询中没有看到任何聚合函数,因此您可能只需删除GROUP BY
:
SELECT status.stud_id, student.fname, student.sname, status.mod_id, modle.mtitle, status.grades
FROM status
INNER JOIN modle
ON status.mod_id=modle.mod_id
INNER JOIN student
ON status.stud_id=student.stud_id
关于mysql - 多对多选择: missing data,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15507348/