【发布时间】:2015-01-30 03:06:34
【问题描述】:
不知道如何构图这个,但就这样吧。
这是一道排序算法题
我必须使用的工具是服务器上的 PostgresSQL 和 python (2.6) 以及浏览器端的 javascript/jquery
我需要将描述线程对话的数据从 postgres 数据库移动到网页。数据按时间顺序开始,我想在线程中显示
记录数量很少 - 返回的消息不应超过 100 条
所以,作为一个简单的例子,想象一下这张桌子:
ID Reply_To Text
=== ======== =============================
1 0 Hello World
2 0 Make me a sandwich
3 1 Hello back
4 2 No chance
5 1 Who are you?
6 5 Me of course
我想到达的终点是
- 你好世界
- 你好回来
- 你是谁?
- 当然是我
- 给我做个三明治
- 没有机会
或者,换一种说法……
ID Reply_To Text
=== ======== =============================
1 0 Hello World
3 1 Hello back
5 1 Who are you?
6 5 Me of course
2 0 Make me a sandwich
4 2 No chance
我不是在这里寻求完整的解决方案,我很乐意使用所有 ajax、json 和格式化的东西。
我只是在思考管理排序的最简洁方法时遇到了问题。
SQL? Python? Javascript?
我目前正在使用 Javascript 中的数组排序(没有比我的 Python 技能异常薄弱的事实更好的理由)
编辑 目前我的情况如下:
function byThread(a,b) {
if (a.reply > b.id && a.reply != 0){
console.log("Compared id=" + a.id + " with id=" + b.id + " and returned -1 ")
return -1;
}
if (a.id > b.reply && b.reply != 0 ){
console.log("Compared id=" + a.id + " with id=" + b.id + " and returned 1 ")
return 1;
}
console.log("Compared id=" + a.id + " with id=" + b.id + " and returned 0 ")
return 0;
}
msg.sort(byThread);
而且它令人沮丧地接近
【问题讨论】:
-
您可能会发现这很有帮助:graphs。 Postgres 支持 CTE,这让这变得容易多了。
-
不确定您对“Reply_To”的阅读。如果仍要收集数据,为什么不使用SQL Fiddle 中的“线程”列。由于没有关于您的应用程序上下文的更多上下文,这似乎让生活变得更加轻松。
-
抱歉@Abecee 在不变得过于冗长的情况下决定要包含多少信息总是很棘手 - 在这种情况下,我无法控制数据结构 - 我被给定的字段所困扰
标签: javascript python sql postgresql sorting