2013-11-14 3 views
0

У меня есть запрос, в который я присоединяюсь к таблице ответов на их вопросы. Обе таблицы имеют внешний ключ, который ссылается на таблицу пользователя, чтобы определить, кто спросил и кто ответил на вопрос.SQL Left Join Foreign Key Обе таблицы

Мой вопрос в том, как я могу изменить следующий запрос, чтобы сделать product_question. userID И product_answer. userID показать имя пользователя из таблицы User вместо всего лишь идентификатора?

    SELECT `project_question`.`id` AS question_id, `project_question`.`question`, `project_question`.`userID` AS askedBy, 
          `project_question`.`created` AS question_created, `project_answer`.`id` AS answer_id, 
          `project_answer`.`answer`, `project_answer`.`userID` AS answeredBy, 
          `project_answer`.`accepted`, `project_answer`.`created` AS answer_created 
         FROM `project_question` 
       LEFT JOIN `project_answer` 
         ON `project_question`.`id` = `project_answer`.`questionID` 
        WHERE `project_question`.`projectID` = $args[0] 
         AND `project_question`.`projectPhase` = 2 

ответ

2

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

 SELECT `project_question`.`id` AS question_id, 
      `project_question`.`question`, 
      q_user.`userName` AS askedBy, 
      `project_question`.`created` AS question_created, 
      `project_answer`.`id` AS answer_id, 
      `project_answer`.`answer`, 
      a_user.`userName` AS answeredBy, 
      `project_answer`.`accepted`, 
      `project_answer`.`created` AS answer_created 
     FROM `project_question` 
    LEFT JOIN `project_answer` 
      ON `project_question`.`id` = `project_answer`.`questionID` 
    INNER JOIN `User` AS q_user 
      ON `project_question`.`userID` = q_user.`userID` 
    INNER JOIN `User` AS a_user 
      ON `project_answer`.`userID` = a_user.`userID` 
     WHERE `project_question`.`projectID` = $args[0] 
     AND `project_question`.`projectPhase` = 2 
+1

Почти, но я должен был изменить ВНУТРЕННИЙ JOINS к СЛЕВА JOINS, так что я получаю вопросы, которые не был дан ответ. – Neve12ende12

+0

@JohnHargis вы правы – mucio