2012-08-02 136 views
1

对于社交网站,我有一张邀请者和被邀请者的ID以及接受或不接受邀请的状态的表格。根据我读过的内容,这似乎是朋友表的最佳做法。MYSQL/PHP表格设计为朋友表/查询选择朋友

表的朋友

id | inviterid |inviteeid |status 

然而,对于一个给定的用户ID,我想显示所有的“朋友”的人也包括他们的名字。我能得到的关系记录列表用一个简单的查询

Select * from friends WHERE inviterid = '33' or inviteeid = '33'" 

但是,这并不容易转化为好友列表,因为朋友可能是要么邀请人或受邀者等等领域会根据不同的谁邀请谁。

有朋友表有更好的桌子设计吗?或者,是否有一种sql语法可以选择可以是邀请者和被邀请者的朋友。最终,我需要对具有用户名的另一个表进行联接。

回答

0

你有一个用户表下面colums

userId|name|... 

和你的朋友表

如果你想找到这个用户邀请主题,您可以使用下面的查询用户的朋友
id | inviterid |inviteeid |status 

select id, status from friend_tbl inner join user_tbl on user_tbl.id=friend_tbl.inviterid; 

,或者如果你想获得这个用户是主题被邀请者的朋友他/她,你可以使用下面的查询:

select id, status from friend_tbl inner join user_tbl on user_tbl.id=friend_tbl.inviteeid; 

我希望这些能帮助你,我能理解你的目的!

0

使用联合可以将两种朋友结合在一起,然后您可以使用用户名表加入结果。

Select inviterid as friend_id, status from friends where inviteeid = 33 
Union 
Select inviteeid as friend_id, status from friends where inviterid =33 
0

我个人只是希望有这种情况,朋友一桌两桌,并邀请表

朋友表

id | userid | friendid 

所以选择朋友将只是

SELECT friendid FROM friend_table WHERE userid = 33 

邀请表

id | inviterid | inviteeid | status 

对于不断变化的邀请表一旦用户认可,并插入新行的朋友表的状态

UPDATE invite_table SET status = 'accepted' WHERE inviterid = 33 
INSERT INTO friend_table (`userid`, `friendid`) VALUES (33, $friendid)