0

我有两张桌子:

表 A 存储用户信息:

Name | Sex | Location | Other | User_ID

表 B 存储私人消息和该消息的发送者、接收者:

Message_content | Sender_ID | Receiver_ID | Message_ID

现在给定一个用户(接收者)名称,我想获取消息内容和发件人的名称,是否可以在一个简单的查询中完成?

我下面的代码只能获取 Message_content 而不能获取发件人的姓名:

$result = mysql_query("SELECT PersonalMsg.content FROM PersonalMsg 
INNER JOIN UserDB ON UserDB.User_ID=PersonalMsg.Receiver_ID 
WHERE UserDB.Name = '$userName'"); 

顺便说一句,我刚开始表 B,如果这个表的设计不好,请告诉我,反正我在设计数据库方面经验很少。提前致谢!

4

3 回答 3

1

是的,您可以,只需添加另一个联接:

SELECT PersonalMsg.content, u2.Name FROM PersonalMsg INNER JOIN UserDB u1 ON UserDB.User_ID=PersonalMsg.Receiver_ID INNER JOIN UserDB u2 ON UserDB.User_ID=PersonalMsg.Sender_ID WHERE u1.Name = '$userName'

您应该真正改变两件事:

于 2013-06-19T07:37:48.620 回答
1

在 上再次加入UserDBSender_ID

就像是:

SELECT p.Message_content, u2.Name FROM PersonalMsg p
LEFT JOIN UserDB u1 ON u1.User_ID=p.Receiver_ID
LEFT JOIN UserDB u2 ON u2.User_ID=p.Sender_ID
WHERE u1.Name = '$userName'
于 2013-06-19T07:38:28.677 回答
0

您必须在数据库设计中使用表 B 中的表 A 主表。然后使用

$resutl = "select a.name,b.Message_content from Table-A as a, Table-B as b where a.User_ID = b.User_ID";
于 2013-06-19T07:42:35.757 回答