簡體   English   中英

如何進行SQL查詢以從兩個單獨的表中獲取兩次聯接的用戶數據?

[英]How to make an SQL query to get user data as joined twice from two separate tables?

我有一個評論清單。 對於每個評論,可能會有子評論(類似於Stack Overflow中對答案的評論)。

我不確定該怎么做,是在一個查詢中查詢所有這些。 到目前為止,我有:

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是注釋的子注釋。 因此,我最終將stuggest_solution_table與users表聯接在一起,並且為了顯示誰做出了子注釋,最終我不得不不得不將users表與suggested_solution_discussion表聯接在一起。

我得到這個錯誤:

ERROR 1066 (42000): Not unique table/alias: '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  
...

您已經兩次連接到用戶表,並且需要為每個表提供一個別名,以便區分它們

...
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時,優化器將不知道他從哪個表進入。


有關更多信息,請檢查

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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