Php 如何从不同的表中同时获取发送方和接收方名称

Php 如何从不同的表中同时获取发送方和接收方名称,php,sql,Php,Sql,我正在尝试为PHP创建一个简单的消息类。我的消息表结构如下: id、发送者id、接收者id、消息、日期 我想从用户表中获取发送方和接收方用户名。如何在一个查询中完成 我期望的示例输出: 发送者、发送者id、接收者、接收者id、消息、日期您必须将消息与用户连接两次才能获得想要的结果。请尝试以下查询: select distinct sender.username as senderName, sender.user_id as sender_id, receiver

我正在尝试为PHP创建一个简单的消息类。我的消息表结构如下:

id、发送者id、接收者id、消息、日期

我想从用户表中获取发送方和接收方用户名。如何在一个查询中完成

我期望的示例输出:


发送者、发送者id、接收者、接收者id、消息、日期

您必须将消息与用户连接两次才能获得想要的结果。请尝试以下查询:

select distinct sender.username as senderName, sender.user_id as sender_id,
                receiver.username as receiverName, receiver.user_id as receiver_id, 
                msg.msg_body, msg.date 
from messages msg inner join users sender on msg.sender_id = sender.id
                  inner join users receiver on msg.receiver_id = receiver.id

您必须将消息与用户连接两次才能获得所需的结果。请尝试以下查询:

select distinct sender.username as senderName, sender.user_id as sender_id,
                receiver.username as receiverName, receiver.user_id as receiver_id, 
                msg.msg_body, msg.date 
from messages msg inner join users sender on msg.sender_id = sender.id
                  inner join users receiver on msg.receiver_id = receiver.id

从你的回答中我一点也不明白。你必须两次加入messages和users表才能获得发件人和收件人的名称。若要在查询中多次使用表,您必须使用每个表的别名作为用户发件人,其中发件人是表用户的副本实际上它是一个新指针/迭代器而不是副本。我做了一些操作,但它会返回每条记录,这意味着将distinct添加到您的select distinct sender、sender\U id、RECEINER、RECEINER\U id、msg、,Date你能发送一个完整的示例并编辑你的答案吗?我从你的答案中一点也不明白。你必须两次加入messages和users表才能获得发件人和收件人的名称。若要在查询中多次使用表,您必须使用每个表的别名作为用户发件人,其中发件人是表用户的副本实际上它是一个新指针/迭代器而不是副本。我做了一些操作,但它会返回每条记录,这意味着将distinct添加到您的select distinct sender、sender\U id、RECEINER、RECEINER\U id、msg、,Date您能否发送一个完整的示例并编辑您的答案?如果您在sql中,这个问题非常清楚。如果您在sql中,这个问题非常清楚