Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/227.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 使用id'查询以获取最新的10行;这是另一张桌子的_Php_Mysql_Greatest N Per Group - Fatal编程技术网

Php 使用id'查询以获取最新的10行;这是另一张桌子的

Php 使用id'查询以获取最新的10行;这是另一张桌子的,php,mysql,greatest-n-per-group,Php,Mysql,Greatest N Per Group,我的网站上有一个跟踪系统,你可以跟踪其他用户 在该网站的主页上,我试图让它显示你跟踪的用户的最新10篇帖子(不是每个人跟踪10篇,而是总共10篇) 我有一个名为followers的表,其结构如下: id | user_id | following_id 1 20 52 2 20 55 1 20 75 ... ... ... 其中,user\u id是您

我的网站上有一个跟踪系统,你可以跟踪其他用户

在该网站的主页上,我试图让它显示你跟踪的用户的最新10篇帖子(不是每个人跟踪10篇,而是总共10篇)

我有一个名为
followers
的表,其结构如下:

id  |  user_id  |  following_id
 1        20           52
 2        20           55
 1        20           75
...      ...          ...
其中,
user\u id
是您的id,
follow\u id
是您正在跟踪的用户的id

然后我有一个名为
posts
的表,其中收集了来自用户的所有帖子

我现在要做的是创建一个查询,从您跟踪的用户那里获取最新的10篇文章(按日期排序)

以下是我迄今为止所做的:

/* Select all users this person is following */
$stmt = $cxn->prepare('SELECT following_id FROM followers WHERE user_id = ?');
$stmt->bind_param('i', $user_id);
$stmt->execute();
$result = $stmt->get_result();

/* If a result exists, continue. */
if ($result->num_rows) {
    while ($row = $result->fetch_assoc()) {
        // not sure what to do here, how would the query look?
    }
} else {
    echo "You aren't following anyone!";
}
我不确定要从你跟踪的人那里获得总共10篇最新帖子,该查询是什么


请帮忙

你的思路是正确的,但你的主要选择仍然是帖子,而不是追随者——这些都是子查询。你可能想要这样的东西

SELECT * FROM posts WHERE poster_id IN 
    (SELECT following_id FROM followers WHERE user_id = ?)
ORDER BY posted_at DESC
LIMIT 10

您编写的查询仍然存在,但它被查询包围,以获取实际的帖子。用poster\u id和poster\u at替换您在posts表中所称的内容。

您的思路是正确的,但您的主要选择仍然是posts,而不是follower-这些是子查询。你可能想要这样的东西

SELECT * FROM posts WHERE poster_id IN 
    (SELECT following_id FROM followers WHERE user_id = ?)
ORDER BY posted_at DESC
LIMIT 10
SELECT *
FROM posts p
JOIN followers f
ON p.author_id = f.following_id
WHERE f.user_id = ?
ORDER BY p.date DESC
LIMIT 10;

您编写的查询仍然存在,但它被查询包围,以获取实际的帖子。用poster\u id和poster\u at替换您在posts表中所称的内容。

您的思路是正确的,但您的主要选择仍然是posts,而不是follower-这些是子查询。你可能想要这样的东西

SELECT * FROM posts WHERE poster_id IN 
    (SELECT following_id FROM followers WHERE user_id = ?)
ORDER BY posted_at DESC
LIMIT 10
SELECT *
FROM posts p
JOIN followers f
ON p.author_id = f.following_id
WHERE f.user_id = ?
ORDER BY p.date DESC
LIMIT 10;

您编写的查询仍然存在,但它被查询包围,以获取实际的帖子。用poster\u id和poster\u at替换您在posts表中所称的内容。

您的思路是正确的,但您的主要选择仍然是posts,而不是follower-这些是子查询。你可能想要这样的东西

SELECT * FROM posts WHERE poster_id IN 
    (SELECT following_id FROM followers WHERE user_id = ?)
ORDER BY posted_at DESC
LIMIT 10
SELECT *
FROM posts p
JOIN followers f
ON p.author_id = f.following_id
WHERE f.user_id = ?
ORDER BY p.date DESC
LIMIT 10;
您编写的查询仍然存在,但它被查询包围,以获取实际的帖子。用poster\u id和poster\u at替换您在posts表中所称的内容。

Related:Related:Related:Related:Related:
SELECT *
FROM posts p
JOIN followers f
ON p.author_id = f.following_id
WHERE f.user_id = ?
ORDER BY p.date DESC
LIMIT 10;