Как сделать SQL-запрос для получения пользовательских данных, объединенных дважды из двух отдельных таблиц? - PullRequest
1 голос
/ 18 января 2012

У меня есть список комментариев. Для каждого комментария могут быть подкомменты (вроде комментариев к ответам в переполнении стека).

Я не уверен, как это сделать, это запрос всего этого в одном запросе. У меня есть это до сих пор:

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 - это подкомментарии комментариев. Поэтому я в конечном итоге соединяю таблицу предлагаемую_солюцию с таблицей пользователей, и для того, чтобы отобразить, кто сделал подкомментарии, мне пришлось присоединиться к таблице suggested_solution_discussion с таблицей пользователей в.

И я получаю эту ошибку:

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

Каков будет правильный способ сделать этот запрос?

Ответы [ 2 ]

2 голосов
/ 18 января 2012

Вы дважды присоединились к таблице пользователей и вам нужно предоставить псевдоним каждому, чтобы их можно было различить

...
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  
...
1 голос
/ 18 января 2012

Вы дважды присоединились к таблице пользователей и вам нужно предоставить псевдоним каждому, чтобы их можно было различить

...
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 не знает, из какой таблицы он выходит.


Для получения дополнительной информации, проверьте ЭТО .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...