mysql - 如何在表中插入数据,其中包含3个其他表的矩阵

时间:2010-11-10 10:06:17

标签: mysql insert matrix

假设我有3个mysql表 - teachersubjectclass,每个表只有两个字段idname

如果每个教师都可以教授每个课程中的每个科目,那么如果我的第四个表格包含三个teacher_id字段subject_id,那么使用SQL将这些信息插入第四个表以保存该数据的好方法是什么? 1}}和class_id

仅举一个例子说明,如果我只有两位老师(老师.1和2),两个科目(科目1和2)和两个班级(班级1和2),数据在第四个表中看起来像下面。

teacher_id  subject_id  class_id
    1           1           1
    1           1           2
    1           2           1
    1           2           2
    2           1           1
    2           1           2
    2           2           1
    2           2           2

2 个答案:

答案 0 :(得分:1)

使用教师,科目,班级表的笛卡尔积的子选择进行插入。

INSERT INTO fourth_table
(SELECT * FROM teacher, subject, class)

答案 1 :(得分:0)

好像你正在看交叉连接或笛卡儿产品。

http://en.wikipedia.org/wiki/Join_%28SQL%29#Cross_join

在你的情况下

SELECT teacher_id, subject_id, class_id 
    FROM teacher JOIN subject JOIN class 
    ORDER BY teacher_id, subject_id, class_id

对于大量数据,这可能需要一段时间才能返回。