3
鉴于下表,我试图编写一个查询来返回用户104的朋友的姓名。如何从朋友的表中查询朋友的名字
MySQL表的朋友
id | requester | requestee | status
--------------------------------------
1 | 140 | 104 | 'friends'
2 | 104 | 151 | 'friends'
我试过,但它并不完全正确,因为它返回的用户140(这是正确的)的名称和用户104(这是不正确的名字 - 我想要的名字的用户151)。我意识到我的部分问题是由于“ON f.requester = u.id”,但我不知道如何编写查询来获得我想要的。
SELECT u.name
FROM users u
INNER JOIN friends f ON f.requester = u.id
WHERE (
f.requester =104
AND STATUS = 'friends'
)
OR (
f.requestee =104
AND STATUS = 'friends'
)
LIMIT 0 , 30
任何帮助表示赞赏。谢谢。
更新:我也尝试做一个“更大的查询”,并使用PHP来提取我所需要的。这种工作,但我只能够获得用户ID到目前为止。 $ query =“SELECT * FROM friends
WHERE requester ='$ userid'OR requestee ='$ userid' AND status ='friends'”; $ results = mysql_query($ query) or die(mysql_error());
$count = 0;
while ($row = @mysql_fetch_assoc($results)){
$count++;
if (!is_null($row['requester'])) {
$requester = $row['requester'];
$requestee = $row['requestee'];
if($requester == $userid)
echo $requestee . "<br /><br />";
else
echo $requester . "<br /><br />";
}
}
谢谢你的帮助。我试过这个查询,并在UNION上得到一个错误:#1064 - 你的SQL语法错误;检查对应于你的MySQL服务器版本正确的语法附近使用手动“UNION (SELECT受邀作为friendId 朋友 在这里,请求= 1”在行8 – user418775
我会尽力调试这... – user418775
我只是不得不删除SELECTS周围的括号,它的作用就像一个魅力!谢谢! – user418775