php - "Conditional"根据字段值加入?

标签 php mysql sql database-design relational-database

我正在开发的网站有 3 种不同类型的用户:管理员、申请人、审阅者。每个组都会有一些需要存储的基本信息(姓名、ID、电子邮件等)以及每个组独有的一些数据。我创建了一个users 表以及为每个特定组创建的表来存储其唯一数据。

  • 用户:ID、姓名、姓名、电子邮件、用户类型
  • users_admin:id、user_id、office、emp_id
  • users_applicant:id、user_id、出生日期、地址
  • users_reviewer:id、user_id、active_status、地址、电话

如果user_type为“1”的用户(申请人)登录,我将需要JOINusers_applicants表来检索他们的完整记录。我尝试使用 UNION 但我的表有截然不同的列。

有没有办法根据用户的类型编写条件查询来JOIN到正确的表?我的处理方式完全错误吗?

预先感谢您的帮助!

最佳答案

好吧,最终你的表已经有缺陷了。为什么每种类型都有一个表格?为什么不将所有这些字段放入 users 表中,或者放入 user_details 表中(如果您确实想要一个用于非通用数据字段的额外表)?目前,您实际上从关系的角度创建了 4 个独立的用户表。

那么为什么类型表有代理键呢?为什么 user_id 还不是(唯一的)主键?

如果你改变了这一点,你所需要的只是用户 ID 来检索你想要的数据,并且你已经得到了它(否则你甚至无法检索用户类型)。

关于php - "Conditional"根据字段值加入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13977315/

相关文章:

php - 无法使用 MySql 和 PHP 让数据库显示信息?

MySQL:按字段递增列

php - 关于 mysql_query -> mysql_fetch_array() 过程

SQL 2008 FILESTREAM - 如何在更改数据库之前检查数据库是否已启用文件流

javascript - 使用 Inert html 创建文件的更好方法

php - 来自php的Ajax响应,在div内回显span?

php - 将 memcached 用于 PHP session 的优缺点

mysql - 这个聚合查询需要mysql中的子查询吗?

soundex - 当php SOUNDEX仅输出3位数字时,如何检查php中的SOUNDEX

mysql - MYSQL分区建议