我必須維護一個數據庫,其用戶有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