我有点混淆了!
当前用户的ID存储在会话中。
我想选择当前用户具有相同company_id
的所有用户。
company_id
是user
表中的字段。
不起作用的查询:
SELECT `all_users`.`id`, `all_users`.`username`, `all_users`.`fullname`
FROM (`user` current_user)
JOIN `company` c ON `c`.`id` = `current_user`.`company_id`
JOIN `user` all_users ON `all_users`.`company_id` = `c`.`id`
WHERE `current_user`.`id` = <<<$current_user_id>>>
错误:
You have an error in your SQL syntax; check the manual that corresponds
to your MySQL server version for the right syntax to use near
'current_user) JOIN `company` c ON `c`.`id` = `current_user`.`company_id` JOIN `u'
答案 0 :(得分:4)
current _user
是MySQL中的保留关键字。
您需要在查询中将其转义为将其标记为表别名。
在查询中使用反引号。像这样:
SELECT `all_users`.`id`, `all_users`.`username`, `all_users`.`fullname`
FROM `user` `current_user`
JOIN `company` c ON `c`.`id` = `current_user`.`company_id`
JOIN `user` all_users ON `all_users`.`company_id` = `c`.`id`
WHERE `current_user`.`id` = <<<$current_user_id>>>
答案 1 :(得分:1)
我认为它有一个非常简单的解决方案!
SELECT `all_users`.`id`, `all_users`.`username`, `all_users`.`fullname`
FROM (`user` u)
JOIN `user` all_users ON `u`.`company_id` = `all_users`.`company_id`
WHERE `u`.`id` = <<<$current_user_id>>>
减少join
,更优化,同样的结果!
答案 2 :(得分:0)
您应该获得会话用户的公司ID,以便在您自己和数据库上轻松实现这一点。
select * from all_users u left join company c on u.company_id = c.id WHERE u.company_id = current_user_id.company_id
这样的事情应该可以正常工作。