-2
我有这些表,并在一个带有用户名和密码的查询(登录时)我想从右表中选择数据。 例如:在用户表中有字段权限。 管理员拥有权限1,供应商拥有权限2,并且客户拥有权限3. 谢谢。我需要MYSQL查询解决方案
+------------+--+----------+--+-----------+--+-------------+
| user | | admin | | vendor | | customer |
+------------+--+----------+--+-----------+--+-------------+
| id_user | | id_admin | | id_vendor | | id_customer |
| username | | id_user | | id_user | | id_user |
| password | | name | | name | | name |
| permission | | surname | | surname | | surname |
+------------+--+----------+--+-----------+--+-------------+
很明显,您的解决方案将会是一些带有一些JOIN子句的SQL语句,但在您更好地解释关系需求之前,不可能专门为您提供帮助。 'user.permission'如何映射到'admin'“权限”? –
好的谢谢。我试过了,它适用于这些查询。 $ query =“SELECT * FROM user INNER JOIN admin ON admin.id_user = user.id_user WHERE user ='$ username'and password ='$ password'limit 1”;但我会添加 “如果(权限== 1)为管理员或如果(权限== 2)供应商或如果(权限== 3)为客户” 并执行单个查询,使自动选择正确的表,检索数据。 – Miks
基于像这样的列值对不同表进行条件连接被认为是非常糟糕的做法,并且通常在不正确的关系数据库设计中存在根本原因。可以将它压缩为仅仅一个SQL查询,但是它会很昂贵(每次总是不需要2个连接时会加入3个连接),并且需要对结果进行空检查。如果不进行任何模式更改,最好将其作为2阶段查询。首先查询用户表,然后根据第一个查询结果的'permission'值,仅查询所需的表。 –