如何从具有 2 个表的数据库中检索好友列表
How to retrieve friend list from a database with 2 tables
我有两张表,一张是用户表,另一张是我 link 在发送朋友请求时向他们发送的。问题是我没能很好地查询来正确地检索用户好友列表。 ID_User1 是发送请求的人,ID_User2 是接受请求的人。 Status_Link 有两个值 1=pending 2=friends。所以当我 select 一个用户时,我想用 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`)
) ;
试试这个:
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...
当用户 = XXX
时,这将 return 所有 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
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
我有两张表,一张是用户表,另一张是我 link 在发送朋友请求时向他们发送的。问题是我没能很好地查询来正确地检索用户好友列表。 ID_User1 是发送请求的人,ID_User2 是接受请求的人。 Status_Link 有两个值 1=pending 2=friends。所以当我 select 一个用户时,我想用 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`)
) ;
试试这个:
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...
当用户 = XXX
时,这将 return 所有 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
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