mysql加入额外的条件

时间:2017-05-15 07:58:13

标签: php mysql database join

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

谢谢你的时间,

1 个答案:

答案 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}}。它们不是必须的,而是良好的做法。