2012-01-20 41 views
0

我正在尝试构建基于用户的消息系统。我想要显示朋友之间发送的消息,有点像Facebook新闻提要。SQL - 使用2个不同的ID从列中返回数据

我使用的查询:

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

一条消息可以传给多个收件人吗? – DOK

+0

不,只有一个收件人 – javy

+0

我没有使用mysql作为looong时间,但应该引用那些变量吗?我假设他们是整数... –

回答

2

您可以使用表名或别名,就像得到了两个用户ID:

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

如果friends表包含无序对朋友和每一个消息与恰好一个这样的对(从+到) ,您可以考虑更改数据库的设计,以便每条消息都可以参考这对数据库(例如friends_id)。

这个额外的数据可以加快您的查询,因为SELECT s与不同的加入条件结合OR几乎不可优化。

+0

有趣的想法,它是有道理的,并会增加一些多功能性/什么我可以查询 – javy

相关问题