0

我有一个查询,按最新新闻故事的顺序列出主题公园。查询如下。

$sql2 = 'SELECT tpf_news.park_id, name
FROM tpf_news
INNER JOIN tpf_parks ON tpf_news.park_id = tpf_parks.park_id GROUP BY name ORDER BY date DESC ' ;
$result2 = $pdo->query($sql2);

在主题公园收到多个新闻报道之前,它一直运行良好,被分组的日期是较旧的日期而不是较新的日期,因此主题公园将保持在其原始位置,当它有新的新闻时不会跳到列表的顶部附上故事。如何更改查询以便按最近日期完成分组?

如果需要,下面是用于显示数据的 php foreach。

<?php foreach ($result2 as $row2): ?>
<h4>
<a class="bloglink" href="parknews.php?park_id=<?php echo $row2['park_id'];?>">
<?php echo $row2['name']; ?>
</a>
</h4>
<br>


<?php endforeach; ?>

谢谢

4

3 回答 3

0
SELECT tpf_news.park_id, name
FROM tpf_news
INNER JOIN tpf_parks ON tpf_news.park_id = tpf_parks.park_id 
GROUP BY name ORDER BY date DESC, **(AutoIncrement_Field)** DESC

希望这会有所帮助..

于 2013-06-20T13:07:45.173 回答
0

您没有选择日期,因此基本上它将使用“随机”日期。您可以尝试像这样选择:

SELECT MAX(date) thedate, tpf_news.park_id, name
FROM tpf_news
INNER JOIN tpf_parks ON tpf_news.park_id = tpf_parks.park_id GROUP BY name ORDER BY thedate DESC

这将选择每个组(名称)中最大的日期,然后按这些日期排序。

于 2013-06-20T12:57:32.103 回答
0

我刚刚解决了:

$sql2 = 'SELECT tpf_news.park_id, name
FROM tpf_news
INNER JOIN tpf_parks ON tpf_news.park_id = tpf_parks.park_id GROUP BY name 

ORDER BY min(STR_TO_DATE(date, "%Y-%m-%d"))'

这似乎可以完成这项工作。谢谢

于 2013-06-20T13:00:55.700 回答