2

少し混んでます!

現在のユーザーの ID はセッションに保存されます。

現在のユーザーと同じユーザーをすべて選択したいcompany_id

company_iduserテーブルのフィールドです。

機能しないクエリ:

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'
4

3 に答える 3

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>>>
于 2013-03-11T03:37:34.870 に答える
1

I think that it had a very simpler solution!

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>>>

Less join, more optimized, same result!

于 2013-03-11T05:00:56.057 に答える
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

このようなものはうまくいくはずです。

于 2013-03-11T03:36:45.893 に答える