PHP MySQL高级过滤

PHP MySQL高级过滤,php,mysql,relational-database,Php,Mysql,Relational Database,对于一个网站的新版本,我在主页上做了一个“顶级用户”部分。这允许人们在一系列不同的类别上为用户投票。所有这些信息都存储在MySQL数据库中的两个主表中。一个表包含信息(id*自动生成*、用户名、添加日期等),另一个表包含速率(id*自动生成*、linkID、rowAvg、avg、avg2等)。速率表中的linkID对应于信息表中的id。查询的工作原理是通过rate\u表进行查询,按最高平均值排序,然后选择前10个结果。然后使用该行的linkID,从info\u表中选择该用户的实际信息。这是很好的

对于一个网站的新版本,我在主页上做了一个“顶级用户”部分。这允许人们在一系列不同的类别上为用户投票。所有这些信息都存储在MySQL数据库中的两个主表中。一个表包含信息(id*自动生成*、用户名、添加日期等),另一个表包含速率(id*自动生成*、linkID、rowAvg、avg、avg2等)。速率表中的
linkID
对应于信息表中的
id
。查询的工作原理是通过
rate\u表进行查询,按最高平均值排序,然后选择前10个结果。然后使用该行的
linkID
,从
info\u表中选择该用户的实际信息。这是很好的,只要每个用户只有一个速率。当一个用户有两个或两个以上的速率,并且两个速率都为正时,会发生什么情况?查询将选择这两个速率,并提取两行中每一行的信息,然后显示为两个不同的用户,即使是同一个人。如何使
rate\u表
查询知道同一
linkID
何时存在多个费率,并将它们平均在一起,而不是将它们显示为两个不同的人。我正在考虑将每个
linkID
插入到一个数组中,然后针对随后选择的每一行,检查该
linkID
是否已在数组中。如果不是,则插入它,如果是,则将它们平均起来并存储在数组中,然后使用数组填充主页上的表。我觉得我想得太多了。抱歉,这有点让人困惑。如果你需要更多的信息,请告诉我

另外,我仍在学习MySQL查询的方法,因此,如果我的方法完全错误,并且你花了最后几分钟试图理解我说的话,我向你道歉:p


p.p.S.我知道我不应该再使用MySQL_查询,而应该做准备好的语句。我想掌握MySQL查询,因为这正是iOS版FMDB数据库所使用的,然后我将学习准备好的语句。

看看其中的一些


可能就是你要找的。一个结果的平均值就是这个结果,所以这仍然有效。在列上使用应唯一的子句,以便在分组行上运行聚合计算。

这可能有助于为您指明正确的方向<代码>平均值()
可能就是您要找的。(一个结果的平均值就是该结果,因此该结果仍然有效)这看起来会有所帮助,但是查询如何知道在哪些行上运行
AVG()
函数呢?有没有检测列重复值的函数?在列上使用应该唯一的子句。太棒了!谢谢,这无疑为我指明了正确的方向。如果你将此作为答案提交,我将接受最后一个快速问题,因为我使用的是限制10函数,如果有两行,它将合并这两行,但只显示其他9行。它不再显示完整的10。如果其中一些行被合并,我如何强制它再选择一行?@JoeTorraca-这不是一个在MySQL中运行的超级简单的计算-看看关于该主题的现有问题:。