MYSQL内部Join if语句

MYSQL内部Join if语句,mysql,if-statement,Mysql,If Statement,我试图将3个表连接在一起,但使用IF语句仅运行某个查询 我有一个用户表、客户表和员工表。以下第一部分工作: SELECT user.`userID`, `username`, `user`.email, `registeredBy`, `registeredDate`, CONCAT(staff.firstName, ' ' ,staff.lastName) AS staffName FROM `user` INNER JOIN `level` ON `user`.levelID

我试图将3个表连接在一起,但使用IF语句仅运行某个查询

我有一个用户表、客户表和员工表。以下第一部分工作:

SELECT user.`userID`, `username`,  `user`.email, `registeredBy`, `registeredDate`, 
  CONCAT(staff.firstName, ' ' ,staff.lastName) AS staffName FROM `user` 
   INNER JOIN `level` ON `user`.levelID = `level`.levelID 
    INNER JOIN `staff` ON `user`.registeredBy = `staff`.userID 
我需要查看谁注册了用户,这显示很好,但是如果用户级别为2,我需要查看员工姓名,如果用户级别为1,我需要查看客户姓名

INNER JOIN `staff` ON `user`.userID = staff.userID IF (user.level = 2)
INNER JOIN `customer` ON user.userID = customer.userID IF(user.level = 1)   
添加以上内容将创建错误

非唯一表/别名:“staff”

如果我删除了staff的内部连接,那么就会出现错误

您的SQL语法有错误; 检查相应的手册 您的MySQL服务器版本 使用near的正确语法 第6行的“IF(user.level=2)”

我只需要根据级别显示客户姓名或员工姓名,但我无法理解如何连接员工表两次。一次获取注册用户的员工成员,然后查看员工姓名(或客户)

为了简化操作,我正在显示的页面示例如下:

用户名|名称|帐户类型| 注册人

希望我没有把它弄得太混乱而无法理解

谢谢。

这不管用吗

INNER JOIN `staff` ON `user`.userID = staff.userID AND user.level = 2
INNER JOIN `customer` ON user.userID = customer.userID AND user.level = 1 

谢谢只有一个问题:员工似乎总是同名,但客户工作正常?因此,这是另一名员工(即,不是注册人)。NP意志fix@Elliott-诀窍是在第二次加入staff时使用不同的别名。@Elliott-我修复了上次加入时的一个拼写错误,并将别名重命名为更具指示性的别名(Level2Staff vs User2Staff)。很高兴我能帮上忙谢谢,对不起,对员工来说还有一件事,他们可以是标准的2级,也可以是管理的4级。我添加了OR user.level=4,这可以正常工作,但是我再次复制了没有名字的员工?再次感谢。
Select user.userID
    , username
    , user.email
    , registeredBy, registeredDate
    , Case 
        When User.Level = 2 Then Concat(Level2Staff.firstName, ' ' , Level2Staff.lastName) 
        When User.Level = 1 Then Concat(customer.firstName, ' ' , customer.lastName) 
        End
        AS staffName 
FROM user
    Inner Join level
        On user.levelID = level.levelID 
    Inner Join staff
        On user.registeredBy = staff.UserID
    Left Join customer
        On customer.userID = user.UserID
            And user.level = 1
    Left Join staff As Level2Staff
        On user.userID = Level2Staff.UserID