我正在尝试构建基于用户的消息系统。我想要在朋友之间发送的消息,有点像facebook新闻源。
我正在使用查询:
SELECT friend_user_2, user_id, user_name, sent_id, sent_from_id, sent_to_id
FROM friends, users, sent_messages
WHERE (user_id = sent_from_id AND friend_user_1 = '$user_id' AND sent_from_id = friend_user_2)
OR (friend_user_1='$user_id' AND friend_user_2=sent_to_id AND user_id=sent_to_id) ORDER BY sent_id
我遇到的问题是,发件人和收件人的user_id没有单独识别,只返回朋友的user_id。我认为表联接是必要的,以某种方式附加名称,或者(如果这是可能的话)在查询返回的数组中嵌套另一个查询,然后查询每个名称。
任何想法??
答案 0 :(得分:2)
您可以使用表名或别名来获取两个用户ID,例如:
SELECT users.user_id, friends.user_id AS friend_user_id ...
答案 1 :(得分:0)
如果friends
表包含无序的朋友对,并且每条消息只与一对这样的消息相关(从+到),您可以考虑更改数据库的设计,以便每条消息都能获得对这对(比如,friends_id
)。
这些额外的数据可以加快您的查询速度,因为SELECT
具有不同的连接条件和OR
几乎无法实现。