我希望有人对我遇到的这种情况有经验。
我有用户的 mysql 数据库,其中有跨多个表的数据。
我在我的本地机器上使用一个工具来查询这些信息,然后根据一个 ID 号将用户检查到一个事件中。
展望未来,我将分别通过“数据库”和“本地”引用上述内容。
我可以通过一组复杂的内部连接查询数据库并获取所需的数据。为了帮助解决这个问题,我创建了一个视图,效果很好。
我的本地可以毫无问题地读取此视图编译数据。
现在这是我的问题。当地人想修改这个数据集中的数据。它要修改的两个字段当前不存在。本地工具不能创建新条目,只能更新/修改现有条目。
现在,我认为我不能用我创建的视图做我想做的事。我想我需要创建一个新表来保存所有这些组合数据,包括两个新字段,以便它可以根据需要修改它们。如果它是一次性同步,这将很容易,但当然不是这样。
我需要定期查看组合数据并用它更新我的新表。我只需要更新每行中的 1 个字段(真/假),然后添加任何其他行。理想情况下,我想删除已删除的行,但这可能会更加困难。
至于更新我的新静态表的字段,我想我会将每一行的字段设置为 false,然后查询该字段设置为 true 的所有行,并将静态表中的这些记录更新为 true。
至于向表中添加新条目,我想我会查询所有记录,查看具有最高唯一标识符的行,然后执行另一个查询以选择所有具有更高 uid 的行。
至于删除行,我不知道。
我是否完全偏离了基础并使这种方式变得更加复杂,然后它需要变得更加复杂,或者是否有更简单的方法来实现这一点?
自定义加入供参考:
SELECT DISTINCT c.fullname AS name, usr.id, usr.username,
usr.firstname, usr.lastname, usr.email
FROM app_course AS c
INNER JOIN app_context AS cx ON c.id = cx.instanceid
INNER JOIN app_role_assignments AS ra ON cx.id = ra.contextid
INNER JOIN app_role AS r ON ra.roleid = r.id
INNER JOIN app_user AS usr ON ra.userid = usr.id
INNER JOIN app_user_enrolments AS enr ON usr.id = enr.userid