【问题标题】:Problem with sql schedule table and preserving old data using JOINsql调度表问题和使用JOIN保留旧数据
【发布时间】:2019-08-17 02:06:29
【问题描述】:

我对sql很陌生,所以如果有一个简单的答案,请原谅我。我正在为学校的课程设置一个日程安排数据库。每个班级有 3 到 9 名学生。我最初打算使用两个带有 JOIN 的表,如下所示:

表 1:班级每周开始时间结束时间 Student1 ... Student9

加入

表 2:日期班主任

这将按日期列出所有课程。问题是,如果有新学生加入课程,更新表 1 会将该学生添加到之前的所有行中,尽管该学生没有参加这些课程。有没有更好(更简单)的方法来设置保留过去行中的数据的计划?

*edit 与其说是代码问题,不如说是数据组织问题。 (我在下面包含了我正在使用的代码)。

表 1:班级每周开始时间结束时间 S1 S2 S3...S9

       English  Mon        8:00       9:00      Jon Sue  Null....Null

表 2:日期班主任

      2019-01-07  English   ProfX   
      2019-01-14  English   ProfY
      2019-01-21  English   ProfZ

那么 JOIN 看起来像

时间表

2019-01-07  English   ProfX   Mon        8:00       9:00      Jon Sue  Null....Null
2019-01-14  English   ProfY   Mon        8:00       9:00      Jon Sue  Null....Null
2019-01-21  English   ProfZ   Mon        8:00       9:00      Jon Sue  Null....Null

现在假设有新学生 (Tim) 加入下一堂课。如果我用新学生更新表 1,之前的所有行都将包括 Tim,但他 2019-01-07 或 2019-01-14 不在课堂上,所以我的表看起来像这样。

2019-01-07  English   ProfX   Mon        8:00       9:00      Jon Sue Tim....Null
2019-01-14  English   ProfY   Mon        8:00       9:00      Jon Sue Tim....Null
2019-01-21  English   ProfZ   Mon        8:00       9:00      Jon Sue Tim....Null

当我只想要这个时:

2019-01-07  English   ProfX   Mon        8:00       9:00      Jon Sue  Null....Null
2019-01-14  English   ProfY   Mon        8:00       9:00      Jon Sue  Null....Null
2019-01-21  English   ProfZ   Mon        8:00       9:00      Jon Sue Tim....Null

////代码////

Create VIEW 'schedule' SELECT Table1.*, Table2.*
FROM Table1
INNER JOIN Table2
ON (Table1.class = Table2.class);

【问题讨论】:

  • 如果你能分享样本数据,那将有助于解决它。
  • 这是一个简单的 VIEW 和 JOIN。我添加了代码并进一步澄清了问题。
  • 您是否将 Tim 添加到与 Jon Sue 相同的列中作为逗号分隔值?或者将 Tim 添加到新列?无论如何,这不是一个好习惯。
  • @IMS Student1 到 Student9 是 9 个不同的列。这种方法看起来简单且适合我的应用程序。如果您知道,请推荐一种更好的方法。
  • 您可以有一个单独的学生表来保存学生详细信息(学生 ID、学生姓名)。在表 1 中,您可以有 ID、星期几、开始时间、结束时间。并且您可以有一个映射表来将学生 ID 映射到表 1 ID。

标签: sql


【解决方案1】:

似乎最简单的方法是在不重写现有行的情况下安排最终表的每日副本。

mySQL daily backup from one table to another

MySQL Event Scheduler on a specific time everyday

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-08-10
    • 2021-04-27
    • 1970-01-01
    • 2011-03-25
    • 2011-07-03
    • 1970-01-01
    相关资源
    最近更新 更多