我必须维护一个数据库,其用户有3个不同的表(针对不同的角色)。不幸的是,合并它们是不允许的。如何加入条件表
还有另一张表记录他们的活动,这张表有两列用于标识特定用户,一个是userId
,另一个是roleId
。现在,当我想列出所有用户的用户活动时,根据roleId
中的值,我将不得不使用不同的表来连接每一行。
如果只有一个表的用户,查询将是这样的:
SELECT * FROM activity JOIN buyers ON activity.userId = buyers.id
所以,我怎么会在这个查询扩展,现在,如果我有3代表与用户:buyers
,sellers
和administrators
;知道activity
表中的roleId
列标识买方,卖方或管理员?
3个单独的查询和两个union语句? – xQbert 2014-11-14 16:42:57
我会质疑“合并它们不被允许”的概念。一个糟糕的设计不应该被允许只是因为“不允许”改变它而被传播。如果你需要频繁地进行这种查询,那么你的设计就不好,你应该解决它。 – 2014-11-14 16:44:52
我个人不允许进行更改,无论性能或其他方面有多糟糕。这是怎么回事:( – 2014-11-14 16:54:11