Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/62.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_Sum_Max - Fatal编程技术网

Php Mysql选择最大和值

Php Mysql选择最大和值,php,mysql,sum,max,Php,Mysql,Sum,Max,我有一个数据库,其中包含一些图片数据和一个链接表。这些表是这样组合的: ---pictures--- picid Lat Lon 1 5 6 2 7 31 3 31 43 4 -3 35 ---user2pictures--- picid userid vote 1 1 1 1 2 1 3 1 -1 3 2 1 4

我有一个数据库,其中包含一些图片数据和一个链接表。这些表是这样组合的:

---pictures---
picid    Lat  Lon
1        5    6
2        7    31
3        31   43
4        -3   35

---user2pictures---
picid   userid  vote
1       1      1
1       2      1
3       1     -1
3       2      1
4       2     -1
表格pictures包含图片id和一些关于图像的数据,表格user2votes包含来自图像的投票数据。每个用户都可以对图像进行投票,但他们只能投票1次,因此投票将为1喜欢或-1不喜欢

我想从图片表中选择投票数最高的图片。伪查询可以更好地解释我想要什么: 从图片中选择*从用户中选择MAXSUMvote图片限制12

在本例中,图片1返回顶部,图片3随后返回,图片4作为最后一个返回。我真的不知道如何解决这个问题,如果能在正确的方向上提供帮助,我将不胜感激

谢谢

答案是加入表格,对投票数求和,然后根据投票数的总和从高到低排序

SELECT pictures.*, SUM(user2pictures.vote) AS VoteTotal
FROM pictures
JOIN user2pictures ON pictures.picid = user2pictures.picid
GROUP BY pictures.picid
ORDER BY VoteTotal DESC
LIMIT 12
答案是加入表格,将选票相加,然后根据选票的总和从高到低排序

SELECT pictures.*, SUM(user2pictures.vote) AS VoteTotal
FROM pictures
JOIN user2pictures ON pictures.picid = user2pictures.picid
GROUP BY pictures.picid
ORDER BY VoteTotal DESC
LIMIT 12
试试这个

   select p.`picid`, `Lat`, `Lon` from pictures p
   inner join user2pictures u2p
   on p.picid = u2p.picid
   group by u2p.picid
   order by sum(vote) desc
   limit 12
试试这个

   select p.`picid`, `Lat`, `Lon` from pictures p
   inner join user2pictures u2p
   on p.picid = u2p.picid
   group by u2p.picid
   order by sum(vote) desc
   limit 12

我假设您也希望显示没有投票权的图片。因此,您可以尝试以下方法:

select 
    p.picId, sum(v.vote) as votes
from 
    pictures as p
    left join user2pictures as v on p.picId = v.picId
group by
    p.picId
order by
    sum(v.vote) desc
limit 12;
左连接允许您显示没有投票的图片。列投票的值为0


希望这有帮助

我假设您也希望显示无投票权的图片。因此,您可以尝试以下方法:

select 
    p.picId, sum(v.vote) as votes
from 
    pictures as p
    left join user2pictures as v on p.picId = v.picId
group by
    p.picId
order by
    sum(v.vote) desc
limit 12;
左连接允许您显示没有投票的图片。列投票的值为0


希望这有帮助

感谢您的输入!也谢谢你的演示,我不知道这样的东西存在,非常有用的测试。谢谢你的输入!也谢谢你的演示,我不知道这样的东西存在,非常有用的测试。