- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我已经将我的数据库设计从单独的主题/帖子表更改为具有父子关系的单个表。
表格如下所示:
CREATE TABLE IF NOT EXISTS `posts` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`channel_id` int(11) DEFAULT '1',
`parent_id` int(25) NOT NULL,
`date` int(12) NOT NULL,
`author` int(25) NOT NULL,
`message` text NOT NULL,
`bbcodes_enabled` int(1) NOT NULL,
`title` varchar(255) NOT NULL,
`state` int(2) NOT NULL,
PRIMARY KEY (`id`),
KEY `article_id` (`parent_id`),
KEY `author` (`author`),
FULLTEXT KEY `message` (`message`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=401614 ;
现在我想创建一个主题列表。如果 parent_id 等于 0,则该行表示一个新主题。否则 parent_id 包含根元素的 ID。
这个问题在某些方面与我的另一个问题相似,但我认为新模式新问题...
如果有人为某个主题提交新帖子,则新帖子的日期是该主题的 last_activity_date。
我想要的是找到所有主题 (limit x,offset) 并按 last_activity_date 对它们进行排序,该日期可以在父元素的最后提交的帖子中找到。
主题链接到一个 channel ,相当于普通留言板中的一个类别。
大多数情况下它应该看起来像这样但是..按最后一篇文章的日期排序。
SELECT p.id, p.date, p.author, p.title, p.state, a.name, a.avatar, a.color
FROM posts p
INNER JOIN authors a
ON a.id = p.author
AND p.channel_id = 126
AND p.parent_id = 0
ORDER BY p.id
DESC
我对 mysql 的理解还不错。但我完全不知道该怎么做。我遇到过几次这种情况,直到现在都没有找到解决办法。只有解决方法,例如使用两个或三个查询..
我希望,我真的希望..有人可以帮助我解决这种情况。
我在这里的临时解决方案是一个 3 查询( Not Acceptable ),例如:
查询 1:
SELECT DISTINCT parent_id
FROM posts
WHERE channel_id = x
ORDER BY date DESC
循环结果并运行这两个查询:
查询 2:
SELECT date as last_ativity from posts where parent_id = x DESC LIMIT 1
查询 3:
SELECT * FROM posts WHERE id = x
想要的结果(在网站上)看起来像这样:
1. TopicTitle | last activity 1 second ago
2. TopicTitle | last activity 35 seconds ago
3. TopicTitle | last activity 1 min ago
4. ...
...
最佳答案
如果我正确理解要解决的问题,您可以通过对每个 parent_id< 返回最近的
。 date
的子查询执行 LEFT JOIN
来完成LEFT JOIN
用于主题没有关联的帖子,因此没有最近的事件。
SELECT
p.id,
p.author,
p.title,
/* other fields from posts to related to the topic...*/
/* Choose the joined date if non-null, otherwise the topic parent date */
COALESCE(d.last_activity_date, p.date) AS last_activity_date,
FROM
posts p
LEFT JOIN (
/* return latest date per parent_id */
SELECT parent_id, MAX(date) AS last_activity_date
FROM posts
GROUP BY parent_id
/* and join back to the main posts table */
) d ON p.id = d.parent_id
/* Only get the top-level threads */
WHERE
p.parent_id = 0
AND p.channel_id = <value>
ORDER BY last_activity_date DESC
LIMIT 0, 15
将日期格式化为看起来像“35 秒前” 最好在您的应用程序代码中完成,而不是在 SQL 查询中完成,许多语言都有专门用于生成“人类可读”时间的库那种。
关于mysql - 从具有父子关系的留言板中查询最后的 n,15 个主题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22998693/
这个问题在这里已经有了答案: “return” and “try-catch-finally” block evaluation in scala (2 个回答) 7年前关闭。 为什么method1返
我有一个动态列表,需要选择最后一项之前的项目。 drag your favorites here var lastLiId = $(".album
我想为每个线程执行特定操作,因此,我认为tearDown Thread Group 不起作用。 是否有任何替代方法可以仅在线程的最后一次迭代时运行“仅一次 Controller ”? 谢谢。 最佳答案
在我的书中它使用了这样的东西: for($ARGV[0]) { Expression && do { print "..."; last; }; ... } for 循环不完整吗?另外,do 的意义何
我想为每个线程执行特定操作,因此,我认为tearDown Thread Group 不起作用。 是否有任何替代方法可以仅在线程的最后一次迭代时运行“仅一次 Controller ”? 谢谢。 最佳答案
有没有可能 finally 不会被调用但应用程序仍在运行? 我在那里释放信号量 finally { _semParallelUpdates.Re
我收藏了 对齐的元素,以便它们形成两列。使用 nth-last-child 的组合和 nth-child(even) - 或任何其他选择器 - 是否可以将样式应用于以下两者之一:a)最后两个(假设
我正在阅读 Jon Skeet 的 C# in Depth . 在第 156 页,他有一个示例, list 5.13“使用多个委托(delegate)捕获多个变量实例化”。 List list = n
我在 AM4:AM1000 范围内有一个数据列表(从上到下有间隙),它总是被添加到其中,我想在其中查找和总结最后 4 个结果。但我只想找到与单独列相对应的结果,范围 AL4:AL1000 等于单元格
我最近编写了一个运行良好的 PowerShell 脚本 - 然而,我现在想升级该脚本并添加一些错误检查/处理 - 但我似乎被第一个障碍难住了。为什么下面的代码不起作用? try { Remove-
这个问题在这里已经有了答案: Why does "a == x or y or z" always evaluate to True? How can I compare "a" to all of
使用 Django 中这样的模型,如何检索 30 天的条目并计算当天添加的条目数。 class Entry(models.Model): ... entered = models.Da
我有以下代码。 public static void main(String[] args) { // TODO Auto-generated method stub
这个问题在这里已经有了答案: Why does "a == x or y or z" always evaluate to True? How can I compare "a" to all of
这个问题已经有答案了: Multiple returns: Which one sets the final return value? (7 个回答) 已关闭 8 年前。 我正在经历几个在工作面试中
$ cat n2.txt apn,date 3704-156,11/04/2019 3704-156,11/22/2019 5515-004,10/23/2019 3732-231,10/07/201
我可以在 C/C++ 中设置/禁用普通数组最后几个元素的读(或写)访问权限吗?由于我无法使用其他进程的内存,我怀疑这是可能的,但如何实现呢?我用谷歌搜索但找不到。 如果可以,怎样做? 因为我想尝试这样
我想使用在这里找到的虚拟键盘组件 http://www.codeproject.com/KB/miscctrl/touchscreenkeyboard.aspx就像 Windows 中的屏幕键盘 (O
我正在运行一个 while 循环来获取每个对话的最新消息,但是我收到了错误 [18-Feb-2012 21:14:59] PHP Warning: mysql_fetch_array(): supp
这个问题在这里已经有了答案: How to get the last day of the month? (44 个答案) 关闭 8 年前。 这是我在这里的第一篇文章,所以如果我做错了请告诉我...
我是一名优秀的程序员,十分优秀!