在表A中选择需要表B中信息的列的最简单方法是什么?

时间:2013-06-19 07:33:50

标签: php mysql sql database

我有两张桌子:

表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,如果这个表的设计不好,请告诉我,无论如何我都没有设计数据库的经验。提前谢谢!

3 个答案:

答案 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";