【发布时间】:2019-07-04 16:21:02
【问题描述】:
- 教师桌
- 学生桌
- 老师有学生桌
这是我数据库中的三个表
| TEACHER_ID | TEACHER_NAME | INSTITUTION_ID |
|------------|--------------|----------------|
| 1 | Stark | 101 |
| 2 | Haydn | 102 |
| STUDENT_ID | STUDENT_NAME | INSTITUTION_ID |
|------------|--------------|----------------|
| 11 | Parker | 101 |
| 12 | Beethoven | 102 |
| TEACHER_ID | STUDENT_ID |
|------------|------------|
| 1 | 11 |
在我的服务中,我收到 3 个值 - TeacherID、StudentID 和 InstitutionID。 我必须插入 Teacher Has Student 表。但是,在我向其中插入 TeacherID 和 StudentID 之前,我还必须确保它们都属于给定的机构 ID。
目前,我尝试了两种不同的查询,它们可以完成任务。
INSERT INTO teacher_has_student
(teacher_id,
student_id)
VALUES ((SELECT teacher_id
FROM teacher
WHERE teacher_id = 2
AND institution_id = 102),
(SELECT student_id
FROM student
WHERE student_id = 12
AND institution_id = 102))
INSERT INTO teacher_has_student (teacher_id, student_id)
SELECT teacher_id, student_id
FROM teacher
JOIN student
where teacher_id = 2
AND student_id = 12
AND teacher.institution_id = 102
AND student.institution_id = 102
但是,查询似乎很麻烦。这是正确的方法吗?还是有更好的方法来解决这个问题?我应该使用触发器吗?
【问题讨论】:
-
我没有看到您的第二个查询有任何问题。如果定义了正确的索引,应该可以正常工作,并且足够高效。
-
我不知道问题是什么。您有两个有效的查询。您还没有定义“繁琐”。您不是在询问数据模型。
-
我刚刚重新格式化了问题。我的意思是问这是否是正确的方法,或者是否有更好的方法来处理它