我正在为具有多个用户类型(用户,管理员,超级用户)的系统设计数据库。我已经阅读了多种处理不同用户帐户类型的方法,以及使我拥有一个带有公共字段的“user”表,然后带有“userType”值以指向正确的方法相应的表格了解更多信息。
我盯着我看的一件事是,如果我想要有关该用户的更多具体数据,我将不得不根据userType运行第二个查询。最初似乎无法获得更具体的用户信息。
我必须根据userType(type = 1 - >转到用户表,键入= 2->转到admin表)执行某种案例逻辑,然后再次点击数据库。我在这里俯瞰什么吗?
谢谢!
答案 0 :(得分:0)
如果必须使用多个表,那么您可以在一个查询中查看它们,或者在select中使用UNION,或者将每个表连接到初始表,并使用if语句选择要显示的列。
答案 1 :(得分:0)
就我个人而言,我认为解决这个问题最合乎逻辑的方法是这样做:
SELECT *
FROM user
LEFT JOIN admin ON admin.user_id = user.user_id AND user.type = 'admin'
LEFT JOIN superuser ON superuser.user_id = user.user_id AND user.type = 'superuser'
对于那些不是管理员/超级用户的用户以及那些用户的行,您将获得NULL
。如果你在所有情况下都不需要额外的字段,那么你应该从查询中省略它们(尽管像Postgres这样的数据库如果你不选择字段就会自动执行此操作)。