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

Mysql SQL-使用两个不同的ID从列返回数据,mysql,sql,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

我正在尝试构建一个基于用户的消息系统。我希望显示朋友之间发送的消息,有点像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
我遇到的问题是,发送方和接收方的用户id没有分别标识,它只返回朋友的用户id。我认为表连接是以某种方式附加名称所必需的,或者(如果这是可能的话)在查询返回的数组中嵌套另一个查询,然后该查询分别查询每个名称


任何想法???

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

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

如果<代码>朋友< /代码>表包含无序的朋友对,每个消息都与一个这样的对(从+到)相关,那么可以考虑更改数据库的设计,以便每个消息都得到对这一对的引用(例如,代码> FuffsSID ID/代码>)。


这些额外的数据可以加快您的查询速度,因为具有不同连接条件的
SELECT
s与
组合几乎无法优化。

一条消息可以发送给多个收件人吗?我已经很久没有使用mysql了,但这些变量真的应该被引用吗?我假设它们是整数…抱歉-它们被引用是因为我在php文件中使用了它,而您使用的是参数化查询,对吗?正确的?!如果“friend_user_2”真的是你格式化数据库字段的方式,如果你还可以的话,考虑重新构建你的架构。使用更多的标准名称,如“user_2”,并通过表“friend.user_2”引用它们。有趣的想法是,这是有意义的,并且会为我可以查询的内容/方式增加一些通用性