php MySql QUERY for Friends关系表帮助

时间:2010-09-06 15:01:52

标签: php mysql

编辑:劳伦斯。

我现在得到了正确的查询

  

选择*   来自用户,朋友   其中(users.id = friends.user_id1和friends.user_id2 = $ profileID)或(users.id = friends.user_id2和friends.user_id1 = $ profileID)

回答问题

我需要一些帮助来加入我朋友和用户表的结果

这是我朋友们的表格

id     user_id1     user_id2   
1   |  2         |  3  
1   |  2         |  4  
1   |  2         |  5  
1   |  6         |  2  

用户表

id    name  
2  |  sarah  
3  |  emma  
4  |  lawrence  
5  |  cynthia  
6  |  suzie  

我可以轻松地为每个关系设置两行并进行简单的查询 但我更喜欢每个关系有一行,

所以我们假设我们正在关注页面member.php?profile = 2
并且有一个朋友列表,查询是什么样的。

如果我每个关系有两行但是我不想要那个......这就可以了。

SELECT * FROM friends, users WHERE friends.user_id1 = $profileID AND friends.user_id2 = users.id ORDER BY friends.id DESC LIMIT 16
你帮我了吗?像

这样的东西
SELECT * FROM friends,users WHERE friends.user_id1 = $profileID AND ALSO WHERE friends.user_id2 = $profileID AND THEN GET FROM users WHERE users.id = friends.user_id1 AND ALSO WHERE users.id = friends.user_id2  

我希望自己清楚明白

2 个答案:

答案 0 :(得分:0)

我不确定我理解你的问题,但不会这样做吗?

SELECT * FROM friends, users where friends.user_id1 = $profileID or friends.userid2 = $profileID and users.id = friends.user_id1 or  users.id = friends.user_id2

答案 1 :(得分:0)

您需要left join(使用LEFT JOIN运算符),而不是cartesian join(使用FROM table1, table2语法)。

http://www.w3schools.com/sql/sql_join_left.asp

提示:使用交叉引用表而不是id列,可以创建复合键。