Php Mysql多表联接以获取用户详细信息
我有两张桌子: 表格-用户Php Mysql多表联接以获取用户详细信息,php,mysql,join,Php,Mysql,Join,我有两张桌子: 表格-用户 userId || username || profileImage ------------------------------------ 1 || aa || aaaaa.png 2 || bb || bbbb.png 3 || cc || cccc.png 4 || dd || dddd.png 表格-关系 relationshipId ||
userId || username || profileImage
------------------------------------
1 || aa || aaaaa.png
2 || bb || bbbb.png
3 || cc || cccc.png
4 || dd || dddd.png
表格-关系
relationshipId || user1 || user2 || status
-----------------------------------------------
1 || 1 || 2 || 0
2 || 1 || 3 || 1
3 || 1 || 4 || 1
4 || 2 || 4 || 1
因此,我需要1发送请求的所有用户(3,4)的详细信息,并且状态被接受为1
我试过的东西:
$stmt = $this->db->prepare("
SELECT users.uId
, users.username
, users.profilePic
from users
JOIN relationship
WHERE (relationship.user_one_Id = :profileUserId || relationship.user_two_Id=:profileUserId)
AND relationship.statusCode=:statusCode
AND users.uId != :profileUserId
LIMIT 6
");
$stmt->bindvalue(":statusCode", 1);
$stmt->bindparam(":profileUserId", $profileUserId);
$stmt->execute();
但这个问题让我产生了争吵,包括那些我不是朋友的人。所以我哪里出错了。我不明白
关系在哪里。用户Id
出现在图片中。我想你是想写relationship.user1
?我还假设发送方存储在user1
中。在这种情况下,您的查询过于复杂:
SELECT t.uId, t.username, t.profilePic
FROM users t
INNER JOIN relationship r
ON (t.id = r.user2
AND r.user1 = :profileUserId
AND r.status = :statusCode
)
什么是
$profileUserId
?它是我正在查看的配置文件的id。。我的个人资料是我自己的还是系统中任何其他用户的。请注意,如果我的假设是错误的,那么没有ORDER BY的限制是相当有意义的。如果我的假设是错误的,请告诉我:给定一个用户ID,你想检索与前者链接的每个用户的数据?@相反,这个问题意味着你的假设是错误的,但是失败的查询意味着你的假设是正确的,所以我不知道哪个是正确的。也。列名更改,这没有帮助。是的,user1是发送请求的用户的用户id,但这并不意味着可以在另一列(即user2列)中找到该用户的用户id,因为她可能也会从其他人那里得到请求并成为朋友。因此,这使得整个查询变得复杂。