0

我正在尝试为我的大学项目创建一个小消息系统。因为所有消息都存储在一个表中,而与用户相关的数据则存储在一个单独的表中。现在我想先选择一个消息范围,然后找到与所选范围相关的相应用户名。最后将这些数据放在一个数组中。

消息表

Message_id | Sender_id | Receiver_id | Title    | Message
1          | 45        | 20          | Testing  | Hello
2          | 10        | 20          | Testing2 | Hi

用户表

User_id    | First_name  | Last_name | Email | Password
10         | David       | Chang     |dd@bb  | asddsf
.
.
20         | Denis       | Peter     |ff@dd  | sdfsd
.
45         | Night       | Hero      |gg@ll  | asdsa

现在我想将所有数据放入这样的数组中。

Message_id=>1
Sender=>David
Receiver=>Denis
Title=>Testing
Message=>Hello

我怎样才能做到这一点?

4

4 回答 4

2

对于您的数据,查询将是

 $qry = 'SELECT Message_id, a.First_name as Sender, b.First_Name as Receiver, Title, Message
         FROM Message m
         JOIN User a on a.user_id = m.sender_id
         JOIN User b on b.user_id = m.received_id
         WHERE m.Message_id = 1';

$result = mysql_query($qry)

结果数据将是一个符合您要求的数组。

于 2013-01-27T09:36:49.447 回答
2

这是问题的 SQL 部分供您尝试:

询问:

select m.message_id, u.First_Name as Receiver, 
s.First_Name as Sender, m.Title, m.Message
from User u
inner join Message m
on m.receiver_id = u.user_id
inner join User s
on m.sender_id = s.user_id
where m.message_id = 1 //-- your condition
group by m.message_id
;

结果基于您在问题中的样本数据:

| MESSAGE_ID | RECEIVER | SENDER |   TITLE | MESSAGE |
------------------------------------------------------
|          1 |    Denis |  Night | Testing |   Hello |

在MYSQL中JOININNER JOIN指的是一样的。您需要使用用户表两次的原因是您的接收器和感应器都是用户表中的用户。也就是说,您也需要为对应的名字添加正确的列别名:)

于 2013-01-27T09:36:52.753 回答
1
SELECT 
  m.message_id, m.title, m.message, 
  u.first_name AS sender, u2.first_name AS receiver
FROM message AS m 
INNER JOIN user AS u ON u.user_id = m.sender_id 
INNER JOIN user AS u2 on u2.user_id = m.receiver_id
于 2013-01-27T09:36:41.397 回答
1

您必须在 SQL 查询中使用 JOIN,如下所示:

SELECT msg.Message_id, sender.First_name, receiver.First_name, msg.Title, msg.Message
FROM table_one as msg
JOIN table_two AS sender ON msg.Sender_id = sender.User_id
JOIN table_two AS receiver ON msg.Receiver_id = receiver.User_id

以上陈述未经测试,如果有任何问题,请发表评论。

于 2013-01-27T09:36:59.540 回答