我有两张桌子:
表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,如果这个表的设计不好,请告诉我,无论如何我都没有设计数据库的经验。提前谢谢!
答案 0 :(得分: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'
你应该真正改变两件事:
答案 1 :(得分:1)
再次在UserDB
上加入Sender_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'
答案 2 :(得分:0)
您必须在数据库设计中使用表B中的表A Primary。然后使用
$resutl = "select a.name,b.Message_content from Table-A as a, Table-B as b where a.User_ID = b.User_ID";