Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/280.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php MySQL查询,根据用户投票最多的照片获得排名_Php_Mysql_Sql_Count - Fatal编程技术网

Php MySQL查询,根据用户投票最多的照片获得排名

Php MySQL查询,根据用户投票最多的照片获得排名,php,mysql,sql,count,Php,Mysql,Sql,Count,现在我使用这个查询来获得用户的排名。问题是它使用了他所有照片中的所有选票来获得他的排名。我希望查询只使用他最受欢迎的照片来计算他的排名 以下是原始查询,如有任何帮助,将不胜感激: select WrappedQuery.* from ( select @rownum := @rownum +1 as rank, prequery.user_id,

现在我使用这个查询来获得用户的排名。问题是它使用了他所有照片中的所有选票来获得他的排名。我希望查询只使用他最受欢迎的照片来计算他的排名

以下是原始查询,如有任何帮助,将不胜感激:

            select WrappedQuery.*
            from (
                select
                  @rownum := @rownum +1 as rank,
                  prequery.user_id,
                  prequery.vote_count
                from
                  ( select @rownum := 0 ) sqlvars,
                    ( SELECT user_id, count(id) vote_count
                      from votes
                      where theme_id = '$currentTheme->id'
                      group by user_id
                      order by count(id) desc) prequery
                  ) WrappedQuery
            where WrappedQuery.user_id = '$me->id'
我试图在预查询中限制0,1,但没有成功


非常感谢。

如果您正在查找特定的照片,请忽略按人分组,但忽略特定元素,然后回滚该信息以获取用户。您对sqlvars@rownum原则的使用将保持不变

让您的内部查询更像(表中还可以猜测特定“Photo_ID”的列名)


“预查询”将以适当的降序顺序返回记录。然后,您必须将@rownum应用于所有可能的行,并应用HAVING子句。Where子句通常会预先检查记录是否符合结果集的条件,如果不符合条件,则会在分配@rownum之前抛出。HAVING子句允许记录应用@rownum,然后查看它的“user_ID”,如果没有,则将其抛出。这样,您就可以根据用户和特定照片的具体组合获得排名。

您可以使用MySQLmax。感谢您的回答和解释。无论如何,我不能让它工作。它返回rank=1,就好像用户是第一个一样。@Kev,然后,仅为了GRIN,尝试通过user/photo和count运行内部预查询,看看这是否返回预期排名中的记录(没有sqlvars rank实现)。。。最后,我只需要在原始查询中将“按用户id分组”更改为“按照片id分组”。有道理。。。对此很抱歉,谢谢您的回答。@Kev,group by应同时在用户ID和照片ID上。照片ID用于将每张照片保持在其自己的排名中,但您的最终HAVING子句是查找该用户的记录,并仅返回该用户的照片(如果有),或者通过您的限制0,1仅获得排名靠前的照片。
select
       @rownum := @rownum +1 as rank,
       prequery.user_id,
       prequery.photo_ID,
       prequery.vote_count
   from
      ( select 
              v.User_ID,
              v.Photo_ID, 
              count(*) as Vote_Count
           from 
              IsItStillTheVotesTable v
           group by 
              v.User_ID,
              v.Photo_ID
           order by 
              count(*) desc ) as prequery,
      ( select @rownum := 0 ) sqlvars
   HAVING
      prequery.user_id = '$me->id'
   LIMIT 
      0,1