Php 最合乎逻辑的排序方式是向上投票和向下投票,以及如何做到这一点

Php 最合乎逻辑的排序方式是向上投票和向下投票,以及如何做到这一点,php,mysql,sql,database,Php,Mysql,Sql,Database,在我的数据库中,表中的每一行都有一些赞成票和反对票,它们代表了该项目的某种加利福尼亚州 当显示表中的所有项目时,根据投票值对这些项目进行排序的最合乎逻辑的方式是什么?我想到: 赞成票的数量(显然是后代) 赞成票数-反对票数 赞成票数与反对票数的关系 哪个更有意义 另外,对于最后一个问题,如何进行SQL查询?这里如何处理0除法的情况?如果我选择了这个选项,取决于我对待0的方式(我不知道如何在order by子句中做到这一点),如果它是最接近现实的一个(结果将是无限的),那么一个有2张赞成票和0

在我的数据库中,表中的每一行都有一些赞成票和反对票,它们代表了该项目的某种加利福尼亚州

当显示表中的所有项目时,根据投票值对这些项目进行排序的最合乎逻辑的方式是什么?我想到:

  • 赞成票的数量(显然是后代)
  • 赞成票数-反对票数
  • 赞成票数与反对票数的关系
哪个更有意义

另外,对于最后一个问题,如何进行SQL查询?这里如何处理0除法的情况?如果我选择了这个选项,取决于我对待0的方式(我不知道如何在order by子句中做到这一点),如果它是最接近现实的一个(结果将是无限的),那么一个有2张赞成票和0张反对票的项目将以最高优先级显示,即一个有1000张赞成票和3张反对票的项目。这对最后一项不是很“不公平”吗


有什么建议吗?

这在很大程度上取决于您的应用程序,但我发现向上投票比向下投票更容易。。。一般来说所以,也许你应该考虑给落选票增加更大的份量。说到要点,可以考虑使用第三属性类型<代码> VoTungIn CuthsTys并使用它而不给查询加逻辑。通过使用一些触发器或过程,您可以实现引用完整性。

您的第二个选项对我来说似乎最符合逻辑。FWIW,“减法”是这些数字之间的关系。这似乎是最符合逻辑的,这取决于你想做什么。你可以做一些像你的第二个一样的事情,这实际上是有史以来评分最高的项目。另一种方法是做同样的事情,但要加入时间元素,这可能是当前的“热门”项目。这完全取决于你想要完成什么。选择最符合你的规范的方法。如果没有具体说明,就去问你要找的人。我想第二个要求更有意义。事实上,在我的项目列表中,情况更为严重,因为一旦某个项目达到一定票数,它就必须进行“测试”(检查其加州),如果它“通过”测试,则该行将从表中删除并移动到另一行。因此,项目应始终以这种方式显示,因此即将通过的项目将是第一个。