gpt4 book ai didi

php - 在一个查询 PHP/SQL 中比较来自多个表的列

转载 作者:行者123 更新时间:2023-11-29 00:04:24 24 4
gpt4 key购买 nike

我正在尝试将用户的新闻提要更改为仅显示 friend 的帖子,而不是网站上所有用户的帖子。我设法这样做做了这样的事情:

function friend_posts(){
global $session_user_id;
if(friends_exist($session_user_id) === true){
$friends = mysql_query("SELECT * FROM `friendship` WHERE `user_id` = $session_user_id AND `pending` = 0");
while($friend = mysql_fetch_array($friends)){
$friendID = $friend['friend_id'];
$posts = mysql_query("SELECT * FROM `posts` WHERE `userid` = $friendID ORDER BY `timestamp` DESC");
while($post = mysql_fetch_array($posts)){
$friendData = user_data($post['userid'],'username','first_name','last_name');
echo $friendData['username'].": ".$post['status']."<br>";
}
}
} else {
echo "Nothing to display. Try adding some friends!";
}
}

然而,这并不是那么方便。例如,如果我想分页,我什至不知道如何开始使用这样的东西来做到这一点。此外,如果多个用户发帖,我将如何按“时间戳”降序对它们进行排序?

我猜我能采取的唯一途径是以某种方式访问​​多个表中的列,然后按 timestamp 排序, 它存储在 posts 中 table 。 friendship表只有 id , user_id , friend_idpending .

我该怎么做?有没有更简单的方法来做我想做的事情?

我是 SQL 的新手。除了插入/删除/更新,我不知道太多。

最佳答案

你可以像这样使用一个语句:

SELECT * FROM posts WHERE userid in 
(SELECT friend_id FROM friendship WHERE user_id = $session_user_id AND pending = 0)
ORDER BY `timestamp` DESC

这样你就只能得到当前用户 friend 的帖子。如果您还需要来自 friendship 表的数据,那么使用 join .

关于php - 在一个查询 PHP/SQL 中比较来自多个表的列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28211346/

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