2012-01-18 9 views
1

私はコメントのリストを持っています。すべてのコメントについて、サブコントリ(Stack Overflowのコメントのようなもの)があります。2つの別々のテーブルから2回ジョインしてユーザーデータを取得するSQLクエリを作成するにはどうすればよいですか?

どのようにすればよいかわからないことは、そのすべてを1つのクエリで照会することです。私はこれまでのところ、これを持っている:

select 
    problem_id , suggester_id , solution , suggested_solution_id , 
    DAYOFMONTH(solution_date) , DAYNAME(solution_date) , YEAR(solution_date) , 
    MONTH(solution_date) , first_name , last_name , email , 
    small_thumb , mid_thumb , solution_name , suggested_solution_comment.comment 
from suggested_solutions 
left join users 
    on suggested_solutions.suggester_id = users.user_id 
left join member_photo 
    on suggested_solutions.suggester_id = member_photo.member_id 
left join suggested_solution_discussion 
    on suggested_solutions.suggested_solution_id = suggested_solution_discussion.suggested_solution_id 
left join users 
    on suggested_solution_discussion.commenter_id = users.user_id 
left join member_photo 
    on suggested_solution_discussion.suggester_id = member_photo.member_id 
where problem_id = id; 

そしてsuggested_solution_discussionは、コメントのsubcommentsです。だから、私は最終的にusersテーブルを使ってsuggest_solutionテーブルに参加し、サブコメントを作成した人を表示するために、私はsuggested_solution_discussionのusersテーブルを持つテーブルに参加する必要があります。

そして、私はこのエラーを取得する:

ERROR 1066 (42000): Not unique table/alias: 'users' 

このクエリを作るための正しい方法でしょうか?

答えて

2

あなたはユーザーテーブルに二度参加し、彼らはあなたが二回usersテーブルに参加している

... 
left join users as users_1 on suggested_solutions.suggester_id = users_1.user_id 
... 
left join users as users_2 on suggested_solution_discussion.commenter_id = users_2.user_id 
... 
+0

申し訳ありませんm8、間違った投稿を編集しました:\ –

+0

あなたは編集を元に戻すことができます。 – Andrew

+0

あなたが答えたものを編集して入れました。しかし、私が作った編集を削除することはできますか? –

1

に区別され、各そうにエイリアスを提供する必要ができるように、それぞれにエイリアスを提供する必要がありますしています彼らは区別することができます

... 
left join users as users_1 on suggested_solutions.suggester_id = users_1.user_id 
... 
left join users as users_2 on suggested_solution_discussion.commenter_id = users_2.user_id 
... 

同じことが他の表にあります。あなたがそれを使用しない場合、例えばusers.user_idを使用すると、oprtimizerはどのテーブルから行くのかを知りません。


詳細については、THISを確認してください。

関連する問題