2017-05-15 8 views
0

私はこのクエリをPHPスクリプトで実行しています。私は紙とユーザーテーブルを持っています。すべての紙に所有者のユーザーがいる場合。すべてのユーザーには会社IDがあります。私が欲しいのは、同じ会社IDを持つユーザー同士がそれぞれの論文を参照する必要があるため、この許可をpaper_idとuser_idで確認しようとしました。余分な条件でmysqlを結合する

papers 
--------- 
id 
user_id 
paper_details 


users 
---------- 
user_id 
company_id 
user_details 

以下のクエリを試した紙とユーザーの結果があるかどうかを確認します。このクエリの作成中に$ user_id_variable$ paper_id_variableという変数しかありません。しかし、私は** $ user_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 

おかげで,,

+0

サンプルデータと予想される結果を追加できますか? – Jens

+0

編集を確認してください –

答えて

1

することができます サンプルデータと期待される結果が

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このクエリを使用:

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です。彼らは必ずしも良い習慣ではありません。

+0

あなたは正しいと思います。 –

+0

INNER JOIN u.user_id = papers.paper_idのユーザーは、u.user_id = papers.user_idのINNER JOINユーザーである必要があります。そして、それは動作します、非常にありがとう:)私はアンカラから来ている方法で、近くの誰かを見て良いです! –

+0

あなたはアリです。 :)間違ったフィールドで申し訳ありません、それを急いで書きました。一定。 –

関連する問題