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