mysql - 多对多选择: missing data

标签 mysql sql select many-to-many relational-database

在大学数据库中,我在学生和他们注册的模块之间建立了多对多关系:使用状态<的桥接表/strong>.

桥接表status具有多字段主键(使用studentmodule的唯一组合;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/

相关文章:

mysql - SQL 模式设计建议

mysql - 按聚合对 GROUP BY 进行排序

sql - 子查询可以与 VALUES 关键字一起使用吗?

php - Pdo 未定义索引和无效参数号

php - 使用 3 select 向先前的查询添加约束

mysql - 如何使用 MySQL 选择有 2 个具有特定值的连续行?

php - 在 php 脚本中创建数据库表的克隆

mysql - 在 From 子句中创建子查询以引用存档表

sql - 如何使用 "max(count(*))"创建一个好的请求?

mysql - 选择查询相关问题