如何从具有2个表的数据库中检索好友列表

时间:2015-04-13 11:15:41

标签: php sql pdo

我有两个表,一个用户和一个我在发送朋友请求时链接它们。问题是我没有设法做出一个好的查询来核心地检索用户好友列表。 ID_User1是发送请求的人,ID_User2是接受请求的人。 Status_Link有两个值1 =挂起2 =朋友。因此,当我选择一个用户时,我想用fname和lname显示他的朋友列表。

CREATE TABLE IF NOT EXISTS `Friends` (
  `ID_Link_Users` int(3) NOT NULL AUTO_INCREMENT,
  `ID_User1` int(3) NOT NULL,
  `ID_User2` int(3) NOT NULL,
  `Status_Link` int(1) NOT NULL,
  PRIMARY KEY (`ID_Leg_Users`)
);

CREATE TABLE IF NOT EXISTS `Users` (
  `ID_User` int(3) NOT NULL AUTO_INCREMENT,
  `FName` varchar(100) NOT NULL,
  `Lname` varchar(100) NOT NULL,
  `Email` varchar(250) NOT NULL,
  `Password` varchar(180) NOT NULL,
  `Status` int(1) NOT NULL,
  PRIMARY KEY (`ID_User`)
) ;

3 个答案:

答案 0 :(得分:2)

试试这个:

SELECT FName, ULName
FROM Friends INNER JOIN
Users ON((ID_User2 = ID_User AND ID_User1 = @User) OR (ID_User1 = ID_User AND ID_User2 = @User))
WHERE Status_Link = 2 -- forgot about that part before...

答案 1 :(得分:1)

当user = XXX

时,这将返回所有ID_User2的名字和姓氏
SELECT FName, LName
FROM Users u
INNER JOIN Friends f ON u.ID_User = f.ID_User2
WHERE u.ID_User1 = 'XXX'
AND f.Status_Link = 2

答案 2 :(得分:1)

SELECT U.Fname, U.Lname
FROM USERS U 
JOIN FRIENDS F ON F.ID_USER2=U.ID_USER
WHERE F.ID_USER= USER ID OF THE REQUESTED FRIEND LIST
AND F.STATUS_LINK=2 --friends status