0

对于一个新版本的网站,我在主页上创建了一个“热门用户”部分。这允许人们在一堆不同的类别上为用户投票。所有这些信息都存储在 MySQL 数据库中的两个主表中。一张表包含信息(id*autogenerated*、用户名、添加日期等),另一张表包含费率(id*autogenerated*、linkID、rowAvg、avg、avg2 等)。来自linkID费率表对应于id来自信息表。查询的工作原理是通过 查询rate_table,按最高平均值排序,然后选择前 10 个结果。然后使用该linkID行的 ,我从info_table. 只要每个用户只有 1 个费率,这就很好。当用户有 2 个或更多费率并且两个费率都是正数时会发生什么情况,查询会选择这两个并提取 2 行中每一行的信息,然后将其显示为两个不同的用户,即使它是相同的人。如何让rate_table查询知道何时有多个相同的费率linkID并将它们平均在一起,而不是将它们显示为两个不同的人。我正在考虑将每个linkID插入一个数组,然后对于每个随后选择的行,检查是否linkID已经在数组中。如果不是,则插入它,如果是,则将它们平均在一起并将其存储在数组中,并使用该数组填充主页上的表格。我觉得我在想这件事。对不起,如果这有点令人困惑。如果您需要更多信息,请告诉我。

PS我仍在学习有关MySQL查询的方法,所以如果我以完全错误的方式进行此操作,我深表歉意,并且您花了最后几分钟试图理解我在说什么:P

PPS 我知道我不应该再使用 MySQL_Query 了,应该使用准备好的语句。我想掌握 MySQL 查询,因为那是 iOS 的 FMDB 数据库使用的,然后我将继续学习准备好的语句。

4

1 回答 1

0

看看一些 MySQL 聚合函数

AVG()可能是您正在寻找的东西。一个结果的平均值就是那个结果,所以它应该仍然有效。GROUP BY在应该唯一的列上使用子句,以便对分组的行运行聚合计算。

于 2013-03-24T04:05:21.013 回答