簡體   English   中英

mysql加入額外條件

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM