Php 从表中提取最新的帖子
全部, 我试图展示我的作者的最新文章 帖子在一个表中,作者在另一个表中。使用的查询是:连接一个名为content_id的列,我正在尝试使用MAX(item_date),这是文章发布的日期 以下是我正在运行的一些查询和输出,我似乎从所有作者那里获得了除最新帖子以外的所有信息: 首先(这一点正在发挥作用),我们需要获得关于作者的信息:Php 从表中提取最新的帖子,php,mysql,max,Php,Mysql,Max,全部, 我试图展示我的作者的最新文章 帖子在一个表中,作者在另一个表中。使用的查询是:连接一个名为content_id的列,我正在尝试使用MAX(item_date),这是文章发布的日期 以下是我正在运行的一些查询和输出,我似乎从所有作者那里获得了除最新帖子以外的所有信息: 首先(这一点正在发挥作用),我们需要获得关于作者的信息: $query="SELECT content_id, title, source_image, url FROM content_detail where appro
$query="SELECT content_id, title, source_image, url FROM content_detail where approved='y'";
$result1 = $mysqli->query($query) or die($mysqli->error.__LINE__);
// GOING THROUGH THE DATA
if($result1->num_rows > 0) {
while($fetch=mysqli_fetch_array($result1)) {
$title=$fetch['title'];
$feed_rss=$fetch['url'];
$content_id=$fetch['content_id'];
$source_image=$fetch['source_image'];
在此基础上,让我们获得第1轮的帖子:
$query2 = "SELECT item_id, item_title, MAX(item_date) as item_date from posts WHERE content_id='$content_id' GROUP BY content_id";
$result2 = $mysqli->query($query2) or die($mysqli->error.__LINE__);
if($result2->num_rows > 0) {
while($rows2=mysqli_fetch_array($result2)) {
$item_id = $rows2['item_id'];
$item_title = $rows2['item_title'];
$item_date = $rows2['item_date']; `
这将收回一组有趣的结果,即作者文章的最新日期,但不是最新标题
我尝试了按项目标题和内容id分组,但没有成功
以下内容仅返回数据库中具有多个日期的记录,问题是(因为这是新的)一些作者只有一篇文章,这些文章不会显示:
$query2 = "SELECT item_id, item_title, item_date FROM posts AS a WHERE content_id = content_id AND item_date = (
SELECT MAX(item_date)
FROM rssingest AS b
)
";
我试过:
ORDER BY DATE DESC LIMIT 1
在我的询问结束时没有任何结果
item_date是表中的日期类型
任何帮助都将不胜感激
谢谢,您需要将posts表本身加入,以便为每个内容id(我相信是作者)只获取最新的post 这为进一步优化打开了大门。你可以一次抓住作者和他们的最后一篇文章
SELECT content_detail.content_id,
content_detail.title,
content_detail.source_image,
content_detail.url ,
posts.item_id,
posts.item_title,
posts.item_date
FROM content_detail
join posts on content_detail.content_id=posts.content_id
join (select max(item_id) max_id, content_id from posts group by content_id) maxid
on maxid.content_id=posts.content_id and maxid.max_id=posts.item_id
where content_detail.approved='y'
但这可能是夸大其词。当然,您应该自己尝试:)您正在运行此查询以获取最长日期:
SELECT item_id, item_title, MAX(item_date) as item_date
from posts
WHERE content_id = '$content_id'
GROUP BY content_id;
当然,您没有得到正确的项目标题。group by
子句中没有提到它,它没有聚合功能。因此,您使用的是MySQL扩展(在其他数据库中,此查询将失败)
您可以使用子字符串\u index()
/组\u concat()
技巧获取最新标题:
SELECT max(item_id),
substring_index(group_concat(item_title separator '|' order by item_date desc), '|', 1) as last_title,
MAX(item_date) as item_date
from posts
WHERE content_id = '$content_id'
GROUP BY content_id;
这将返回一行。但是,如果只需要一行,可以执行以下操作:
SELECT p.*
from posts p
WHERE p.content_id = '$content_id'
ORDER BY item_date desc
LIMIT 1;
如果您添加一个groupby
语句,那么上一个版本将通用化。为什么不JOIN
这些表呢?不应该是按项目的订单_datedesc LIMIT 1
?请查看参数化查询。谢谢,我得到了所需的
SELECT p.*
from posts p
WHERE p.content_id = '$content_id'
ORDER BY item_date desc
LIMIT 1;