java - Java 中的 SQL 联结表

标签 java sql junction

我想使用多对多关系。如何在 sql 中做 student with subjects 和 subject with students。

学生表有

student_IDno | full name | address |

主题表有

subject_IDno|标题 |说明 |时间 |

我想把学号分配给 subject表,让subject表可以有students

我可以在主题表中做同样的事情吗?将主题 ID 编号分配给学生表,以便它也可以有一个主题?

如果我搜索主题代码,学生将会出现, 反之亦然,如果我搜索学生代码科目也会出现。

最好的方法是什么?我希望我能很好地解释我的问题,谢谢你们。

最佳答案

您引入了第三个表来建立表 STUDENT 和 SUBJECT 之间的关系。让我们调用表 CLASS。它将包含以下列:

类号 |学生证号 | subject_IDno

假设一名学生就读于学校。一个条目将被插入到具有唯一 student_IDno 的 STUDENT。 (比方说 1)

Subject 列表当然位于 SUBJECT 表中。

现在如果学生想注册一个科目,他将不得不加入一个类(class)。现在,您将他插入到 student_IDno = 1 和 subject_IDno = 他注册的任何科目的类(class)中。

您的 CLASS 表将如下所示:

classID | student_IDno | subject_IDno
   1    |      1       |     1
   2    |      1       |     2
   3    |      1       |     3

你能看到它是如何显示学生 1 有多少个 CLASSes 的吗?

您如何进行搜索?假设您想找到参加 SUBJECT 1 的学生。

SELECT student.* FROM CLASS as class
JOIN SUBJECT as subject ON class.subject_IDno = subject.subject_IDno
JOIN STUDENT as student ON class.student_IDno = student.student_IDno 
WHERE subject.subject_IDno = 1

剩下的就交给你了。我想你明白了。

more on SQL join here

关于java - Java 中的 SQL 联结表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33468750/

相关文章:

java - 将 java web start 应用程序日志重定向到文件

java - 露天 Java 词典服务

c# - 获取错误 : "Error converting data type nvarchar to numeric" in SQL

python - 如何计算给定日期的 SQL 表中列的总和,并用最接近的前一个日期修补缺失值?

java - 如何使用 Maven 消除连接

java - fb 中的操作 :request form is always null

java - JACOB 库的有效 COM 结构是什么?

mysql - 比较当前日期和上个月的日期

php - 连接表中唯一的一对值

winapi - NTFS Junctions,难以理解 API