好吧,我到处都找了,关于如何用一些任意值对层次数据进行排序/排序,比如按字母顺序,最高票数,等等。你们有没有关于嵌套集或其他什么的解决方案?
下面是一个家伙在我的线程中对reddit进行的几个示例查询,我添加到(联合了很多选择。。帮助?):
http://sqlfiddle.com/#!9/6dd457/10-按字母顺序排列http://sqlfiddle.com/#!9/786d89/36-按得票最高的顺序排列
这些是核心的邻接列表,mysql会根据排序参数动态创建一个具体化的路径。每次有人访问viewtopic.php时都会生成此消息,因为每个用户都有自己的自定义排序。
现在这种方法有一些问题。首先,看到所有这些选择和加入让我有点担心。我想有一个更优化的方法来实现这一切。
php可以用来计算出最高的父节点值,我们要从中生成多少层,以及其他一些东西的格式,但是这里面也有一个问题:
(1000-l1.totalvots)+(2l1.negatives)-必须在整个查询中重复5次
我试图在其受人尊敬的select查询中使用((1000-l1.totalvotes)+(2l1.negatives))作为l1.votes,但我得到了一个错误:/。
我的最终目标是生成一个能够按照我想要的顺序排序的查询,这样我就可以使用模板和深度信息来生成html,而不必再使用php,因为sql是如何更高效地处理这类事情的。我最担心的是,这样的查询对于大型网站来说是不好的。
最终的目标是像reddit一样快:嵌套注解,能够按发布日期、投票总数和其他一些参数排序,所有这些都使用尽可能多的mysql和尽可能少的php。如果您有任何使用闭包表、嵌套集或纯物化路径的解决方案,我很乐意听到。我这里的解决方案看起来既优化又可怕。
暂无答案!
目前还没有任何答案,快来回答吧!