Простая операция соединения SQL - PullRequest
0 голосов
/ 11 февраля 2012

Моя структура базы данных выглядит следующим образом:

   Members table

   |id|username|...

   Messages table
   |id|fromId|toId|content

В таблице сообщений идентификатор относится к идентификатору сообщения, в элементах он относится к идентификатору пользователя (это тот же Id, что и в fromId и toId). Я хочу сделать запрос на присоединение ОТ сообщений WHERE id = SOME_MESSAGE_ID, который извлекает следующий набор результатов

   |id(message id)|fromId|fromUsername(username that corresponds to fromId)|toId|toUsername(username that corresponds to toId)|content

Любая помощь будет оценена.

Ответы [ 2 ]

1 голос
/ 11 февраля 2012

Как насчет этого:

SELECT    `Message`.`id`,
          `Message`.`fromId`,
          `From`.`username` AS `fromUsername`,
          `Message`.`toId`,
          `To`.`username` AS `toUsername`
          `Message`.`content`
FROM      `Messages` AS `Message`
LEFT JOIN `Members` AS `From`
ON        `From`.`id` = `Message`.`fromId`
LEFT JOIN `Members` AS `To`
ON        `To`.`id` = `Message`.`toId`
WHERE     `Message`.`id` = 1

Для получения дополнительной информации о запросах SELECT, нажмите здесь .

1 голос
/ 11 февраля 2012

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

SELECT
    messages.id,
    messages.fromId,
    from_member.username AS fromUsername,
    messages.toId,
    to_member.username AS toUsername,
    messages.content
FROM messages 
JOIN members AS from_member ON from_member.id = message.fromId
JOIN members AS to_member ON to_member.id = message.toId
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...