我有一个查询按照最新新闻的顺序列出主题公园。查询如下。
$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; ?>
由于
答案 0 :(得分: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
这将选择每个组中的最大日期(名称),然后按这些日期排序。
答案 1 :(得分: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"))'
这似乎可以胜任这项工作。 感谢
答案 2 :(得分: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
希望这会有所帮助..