将数据添加到复杂的mysql join / view中

时间:2013-06-24 21:17:23

标签: php mysql inner-join

我希望有人有我遇到的这种情况的经验。

我有用户的mysql数据库,有多个表的数据。

我在本地计算机上使用工具查询此信息,然后根据ID号将用户检入事件。

今后我将分别通过“数据库”和“本地”来引用上述内容。

我可以使用一组复杂的内部联接查询数据库并获取所需的数据。为了帮助我,我创建了一个很好的视图。

我的本​​地人可以毫无问题地阅读此视图编译数据。

现在这是我的问题。本地想要修改此数据集中的数据。它想要修改的两个字段当前不存在。本地工具无法创建新条目,只能更新/修改现有条目。

现在,我不认为我可以用我创建的视图做我想做的事情。我想我需要创建一个新表来保存所有这些组合数据,包括两个新字段,以便它可以根据需要修改它们。如果它是一次同步,这将很容易,但当然情况并非如此。

我需要定期查看合并数据并用它更新我的新表。我只需要更新每行中的1个字段(true / false),然后添加任何其他行。理想情况下,我想删除已删除的行,但这可能会更难。

至于更新我的新静态表的字段,我想我会将每一行的字段设置为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

1 个答案:

答案 0 :(得分:0)

每个@Barmar在上面的评论中触发器就是答案。