gpt4 book ai didi

php - SQL Join 语句收集用户的 friend 和用户的消息

转载 作者:行者123 更新时间:2023-11-29 02:02:58 27 4
gpt4 key购买 nike

我有 3 个表:消息、用户和 friend 。

Messages: msg_id, uid_fk, message, alert, created, uploads, owner
Users: uid, first_name, last_name
Friends: friend_one, friend_one

当一个用户成为另一个用户的 friend 时,我会按照以下方式记录他们的 uid:friend_one:172 friend_two:58 | friend_one:58 friend_two:172我下面的代码运行良好,可以选择所有用户的消息更新。我的问题是我不仅需要选择用户本人的所有消息,还需要选择他或她的所有 friend 的消息。

上面提到的以下内容仅选择用户的状态更新,我已经努力了几个小时,不仅要选择用户的状态更新,还要选择他或她的 friend 。

$query = $db->prepare("SELECT M.msg_id, M.uid_fk, M.message, M.alert, 
M.created, M.uploads , M.owner , U.uid , U.first_name , U.last_name FROM
messages M, users U WHERE M.uid_fk=U.uid and M.uid_fk= :uid_fk limit 10");
$query->execute(array(':uid_fk' => $uid));

($uid 是登录用户的 session ID)

还有我选择 friend 的代码以防万一:

$friends_sql = $db->prepare("SELECT a.first_name, a.uid, a.last_name FROM users 
a, friends b WHERE a.uid = b.friend_two AND b.friend_one = :friend_one ORDER BY
b.friend_id DESC LIMIT 8");
$friends_sql->execute(array(':friend_one' => $uid));

最佳答案

以下应返回用户和用户好友的最近 10 条消息。

SELECT 
M.msg_id,
M.uid_fk,
M.message,
M.alert,
M.created,
M.uploads,
M.owner,
U.uid,
U.first_name,
U.last_name
FROM
users u
JOIN messages m ON m.uid_fk = u.uid
WHERE
u.uid = :uid
OR u.uid IN (
SELECT f.friend_two
FROM friends f
WHERE f.friend_one = :uid
)
ORDER BY m.created DESC
LIMIT 10

关于php - SQL Join 语句收集用户的 friend 和用户的消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11654843/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com