免责声明:我没有设计这些表格,并且我知道它们不是存储这些数据的最佳方式。我需要有关处理这种情况的最佳方法的建议。
我有两个MySQL表:
`students`
id int; primary, unique
prof1_id varchar
prof2_id varchar
prof3_id varchar
`professors`
id int; primary, unique, auto-increment
username varchar
fname varchar
fname varchar
students_id int
comment text
教授的用户名可能位于students
表的最后三列中的任何一列。教授需要为每个在students
表中排成一行的学生提供一条评论。
作为此数据库前端的应用程序需要professors
表中的另外两列:student_id和comment。由于每个学生可能在他们的行中有任何3位教授,因此只要为多名学生列出新行,就需要将新行添加到professors
。这意味着professors
id字段需要为每个新学生评论自动递增。
使用MySQL查询完成此数据传输的最佳方法是什么?我已经尝试将UPDATE与JOIN结合使用,但我不确定是否有一种有效的方法可以做到这一点。另外,我是否需要为professors
创建另一个主键,因为多行具有相同的ID?
我怀疑VIEW可能是实现此目的的最佳方式,但前端的应用程序希望将信息存储在professors
表中。
我正在考虑的另一件事是我可以通过加入两个表创建一个新表,并有一个两列主键,students.id,professor.id。
谢谢!
答案 0 :(得分:0)
此外,我是否需要为教授创建另一个主键 多行将具有相同的ID?
是。这是个好主意。
我编写了简单的查询,将第一个表中的数据合并为2列。这不是完整的答案,但它可以帮助你很多:
SELECT id, prof1id as profid
UNION
SELECT id, prof2id
UNION
SELECT id, prof3id
UNION;
你可以使用它来查看,插入,但我不熟悉specyfic MySQL语法,我不想误导你。如果有效,请提供反馈。
" UNION"删除重复的行,您可能需要使用" UNION ALL"保持重复(如2或3位教授专栏中的重复值)。