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
希望这有帮助感谢您的输入!也谢谢你的演示,我不知道这样的东西存在,非常有用的测试。谢谢你的输入!也谢谢你的演示,我不知道这样的东西存在,非常有用的测试。