Php 简单的SQL连接操作

Php 简单的SQL连接操作,php,mysql,join,Php,Mysql,Join,我的数据库结构如下: Members table |id|username|... Messages table |id|fromId|toId|content 在messages表中,id指的是消息id,在成员中,id指的是用户id(与fromId和toId中的id相同)。我想从消息中执行连接查询,其中id=SOME\u MESSAGE\u id提取以下结果集 |id(message id)|fromId|fromUsername(username that

我的数据库结构如下:

   Members table

   |id|username|...

   Messages table
   |id|fromId|toId|content
在messages表中,id指的是消息id,在成员中,id指的是用户id(与fromId和toId中的id相同)。我想从消息中执行连接查询,其中id=SOME\u MESSAGE\u id提取以下结果集

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

任何帮助都将不胜感激。

加入成员表两次,但使用不同的别名:

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
这个怎么样:

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查询的更多信息,我不知道您可以加入两次。正是我想要的。有一个向上投票:)只是一个简短的提示,使用
JOIN
将导致查询像
内部JOIN
一样运行,并且不会返回缺少一条成员记录的消息。还有一件事,该表的名称为全小写,这可能是一个问题,具体取决于安装数据库服务器软件的操作系统。有些是区分大小写的。没关系,成员记录永远不会丢失。是你的还是左派加入更有效?我还根据情况编辑了这些名字。很好用,谢谢。您的左连接是比上面的双连接更有效,还是同样有效?@user974896-效率不高。唯一真正的区别是
左连接将返回
NULL
列,而不是完全不返回行。因此,例如,如果您删除一个用户,
左连接仍然允许您查看消息,但是
用户名
将为
NULL