[英]mysql join with extra conditions
我在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'
编辑样本数据和预期结果:
--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
谢谢你的时间,,
您可以使用以下查询:
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
$paper_id_variable
。 它们不是必须的,而是良好的实践。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.