我希望有人对我遇到的这种情况有经验。
我有 mysql 用户数据库,其中数据跨多个表。
我正在本地计算机上使用一个工具来查询此信息,然后根据 ID 号将用户 checkin 事件。
接下来我将分别通过“数据库”和“本地”引用上述内容。
我可以通过一组复杂的内部联接查询数据库并获取我需要的数据。为了帮助实现这一点,我创建了一个 View ,效果很好。
我的本地可以毫无问题地读取此 View 编译的数据。
现在这是我的问题。本地想要修改此数据集中的数据。它要修改的两个字段当前不存在。本地工具无法创建新条目,只能更新/修改现有条目。
现在,我认为我无法用我创建的 View 做我想做的事情。我想我需要创建一个新表来保存所有这些组合数据,包括两个新字段,以便它可以根据需要修改它们。如果是一次性同步,这会很容易,但当然情况并非如此。
我需要定期查看组合数据并用它更新我的新表。我只需要更新每行中的 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
最佳答案
上面评论中的@Barmar 触发器就是答案。
关于php - 向复杂的 mysql 连接/ View 添加数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17285285/