我在php脚本中运行此查询。我有纸和用户表。如果每篇论文都有所有者用户。每个用户都有一个公司ID。我想要的是具有相同公司ID的用户应该看到彼此的论文,所以我试图通过paper_id和user_id来检查这个权限。
papers
---------
id
user_id
paper_details
users
----------
user_id
company_id
user_details
要检查是否存在我在下面尝试查询的论文和用户的结果。在进行此查询时,我只有 $ user_id_variable 和 $ paper_id_variable 变量。但是我无法在查询的任何地方使用** $ user_id_variable **。
SELECT * FROM papers
INNER JOIN
users u on u.user_id= papers.user_id
WHERE
papers.user_id in (
SELECT user_id FROM users WHERE users.company_id=u.company_id
)
AND papers.id = '$paper_id_variable'
EDIT 样本数据和预期结果:
--papers--
id | user_id
1 | 1
--users--
user_id | company_id
1 | 10
2 | 10
3 | 11
根据上表预期结果应为:
when paper id = 1 and user id 1 -> result count = 1
when paper id = 1 and user id 2 -> result count = 1
when paper id = 1 and user id 3 -> result count = 0
谢谢你的时间,
答案 0 :(得分:1)
您可以使用此查询:
SELECT *
FROM papers
INNER JOIN users u on u.user_id=papers.user_id
WHERE u.company_id = (SELECT company_id FROM users WHERE user_id = '$user_id_variable')
AND papers.paper_id = '$paper_id_variable'
注意:在论文表中保存company_id
可能是另一个想法。不要忘记创建索引,不要使用user_id, paper_id
等字段名称。只需使用id
即可。对于PHP变量,使用$paperId instead
的{{1}}。它们不是必须的,而是良好的做法。