SQL - 使用2个不同的ID从列返回数据

时间:2012-01-20 18:01:28

标签: mysql sql

我正在尝试构建基于用户的消息系统。我想要在朋友之间发送的消息,有点像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。我认为表联接是必要的,以某种方式附加名称,或者(如果这是可能的话)在查询返回的数组中嵌套另一个查询,然后查询每个名称。

任何想法??

2 个答案:

答案 0 :(得分:2)

您可以使用表名或别名来获取两个用户ID,例如:

SELECT users.user_id, friends.user_id AS friend_user_id ...

答案 1 :(得分:0)

如果friends表包含无序的朋友对,并且每条消息只与一对这样的消息相关(从+到),您可以考虑更改数据库的设计,以便每条消息都能获得对这对(比如,friends_id)。

这些额外的数据可以加快您的查询速度,因为SELECT具有不同的连接条件和OR几乎无法实现。