![](/img/trans.png)
[英]php/mysql - Compare multiple columns from 2 tables and show biggest differnce
[英]Compare columns from multiple tables in one query PHP/SQL
我正在尝试将用户的新闻提要更改为仅显示朋友的帖子,而不是网站上所有用户的帖子。 我这样做是这样的:
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!";
}
}
但是,这并不方便。 例如,如果我想分页,我什至不知道怎么开始使用类似的方法。 另外,如果有多个用户发帖,我该如何按“时间戳”降序对它们进行排序?
我猜我唯一可以采取的途径是以某种方式访问多个表中的列,然后按存储在posts
表中的timestamp
进行排序。 friendship
表仅具有id
, user_id
, friend_id
和pending
。
我将如何去做? 有没有更简单的方法可以做我想做的事情?
我对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
这样,您仅获得当前用户的朋友的帖子。 如果您还需要friendship
表中的数据,请使用join 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.