对于新版网站,我在主页上创建了“热门用户”部分。这允许人们在一堆不同的类别上为用户投票。所有这些信息都存储在两个主表中的MySQL数据库中。一个表有信息(id *自动生成*,用户名,添加日期等),另一个表有费率(id * autogenerated *,linkID,rowAvg,avg,avg2等)。费率表中的linkID
对应于信息表中的id
。查询的工作原理是通过rate_table
进行查询,按最高平均值对其进行排序,然后选择前10个结果。然后使用该行的linkID
,我从info_table
中选择该用户的实际信息。只要每个用户只有1个费率,这就很好。当用户具有2个或更多费率并且两个费率都为正时,会发生什么情况,查询选择这两个并为两行中的每一行提取信息,然后将其显示为两个不同的用户,即使它们是相同的人。如果同一rate_table
有多个费率,并且将它们平均在一起而不是将它们显示为两个不同的人,我如何知道linkID
查询。我想将每个linkID
插入一个数组中,然后对于每个随后选择的行,检查数组中是否已linkID
。如果没有,插入它,如果是,则将它们平均在一起并将其存储在数组中并使用该数组填充主页上的表。我觉得我在想这个。对不起,如果这有点令人困惑。如果您需要更多信息,请与我们联系。
P.S。我仍然在学习MySQL查询的方式,所以如果我以完全错误的方式解决这个问题我会道歉并且你花了最后几分钟试图理解我的意思:P
P.P.S。我知道我不应该再使用MySQL_Query了,应该做准备好的语句。我想掌握MySQL查询,因为这是iOS使用的FMDB数据库,然后我将转向学习预备语句。
答案 0 :(得分:0)
查看一些MySQL Aggregate Functions。
AVG()
可能就是你要找的东西。一个结果的平均值就是那个结果,所以它应该仍然有效。对应该唯一的列使用GROUP BY
子句,以便对分组行运行聚合计算。