【发布时间】:2013-12-10 09:28:15
【问题描述】:
假设我有 3 个数据库表:
- 教师,具有以下字段:
- 身份证
- 姓名
- 主题,具有以下字段:
- 身份证
- 姓名
- teachers-subjects,具有以下字段:
- teacher_id
- subject_id
所以,一些老师有共同的学科。
我考虑过查询的算法:
对于subjects表中的每条记录:
选择 Teachers_subjects 表中的计数。
如果计数大于 1
在teacher_subjects中,获取subject_id为s的teacher_id's。建立关系对。
我想得到如下输出:
+----------+----------+---------------+
| Teacher1 | Teacher2 | Relationships |
+----------+----------+---------------+
| John | Larry | 10 |
| John | Samantha | 12 |
| Samantha | Larry | 9 |
| Ian | Louis | 3 |
+----------+----------+---------------+
如果我需要检索哪些主题建立了关系,我们需要得到类似的东西:
+----+----------+----------+
| id | teacher1 | teacher2 |
+----+----------+----------+
| 1 | John | Larry |
| 2 | John | Samantha |
| 3 | Samantha | Larry |
| 4 | Ian | Louis |
+----+----------+----------+
还有类似的:
+-----+------------+
| id | subject |
+-----+------------+
| 1 | math |
| 1 | english |
| 1 | science |
| ... | ... |
| ... | ... |
| 4 | science |
| 4 | literature |
| 4 | databases |
+-----+------------+
以图形方式,我在通过网络浏览器查阅的图表中表示这一点:
所以当我悬停在一条边上时,它会显示关系信息。
我将通过 php 编程接收查询结果,这样的查询或存储过程会为我产生这样需要的输出吗?
【问题讨论】:
-
你能再解释一下最后一张桌子吗?
-
在第二张表中,我得到了有关系的教师(共同学科)和关系的数量,每条记录都有一个 ID。所以在最后一张表中,我得到了哪些是关系,老师们有哪些共同点。