Php MySQL统计ID的出现次数
我有以下查询,它返回事件详细信息和基于投票数的排名Php MySQL统计ID的出现次数,php,mysql,join,Php,Mysql,Join,我有以下查询,它返回事件详细信息和基于投票数的排名 SELECT e.guid, e.name, e.desc, e.location, e.votes, @curRank := @curRank + 1 AS rank FROM event e, (SELECT @curRank := 0) r ORDER BY votes DESC 这给了我所需的输出。但是,因为我想存储更多关于谁投票的信息,以确定用户是否可以投票,因为每人可以投1票。我创建了一个名为event_vots的新
SELECT e.guid, e.name, e.desc, e.location, e.votes,
@curRank := @curRank + 1 AS rank
FROM event e, (SELECT @curRank := 0) r
ORDER BY votes DESC
这给了我所需的输出。但是,因为我想存储更多关于谁投票的信息,以确定用户是否可以投票,因为每人可以投1票。我创建了一个名为event_vots的新表,如下所示:
event_vote_id | event_guid | user_guid
1 abc1 def6
2 ghi4 def6
3 abc1 lmn2
如何使第一个查询再次工作,以替换e.votes字段,该字段随事件\投票中事件\ guid的出现次数递增
预期结果
guid:abc1
姓名:testevent
描述:示例
地点:伦敦
投票:2
排名:1我没有测试它,但希望它能工作
SELECT e.guid, e.name, e.desc, e.location,
(SELECT COUNT(ev.id) FROM event_votes ev WHERE ev.event_guid = e.guid) AS votes,
@curRank := @curRank + 1 AS rank
FROM event e, (SELECT @curRank := 0) r
ORDER BY votes DESC
最好做一个真正的左撇子join@DanielE. 这取决于需要。如果您只有一个select,子查询比left join更好,至少我是这样认为的:但是当然,我们也可以使用真正的left join。但是,排名被打破了,如果我有一个有1票的事件,而其余的没有,它排名第二。有什么想法吗?@H1ggsy最快最肮脏的方法是返回null而不是0选择e.guid、e.name、e.desc、e.location,选择IFCOUNTev.id>0,COUNTev.id,事件投票为NULL,其中ev.event\u guid=e.guid作为投票,@curRank:=@curRank+1作为事件e的排名,选择@curRank:=0按投票顺序描述```