gpt4 book ai didi

mysql - SQL 选择外连接和分组依据和 ISNULL ( COUNT ) HELP =x

转载 作者:行者123 更新时间:2023-11-30 00:15:00 25 4
gpt4 key购买 nike

我有这个数据库,我想创建一个很棒的选择,但这对我来说太难了,我想我尝试了很多方法并且我非常接近,但我不能再继续了。

数据库

Table -> Candidato | IdCandidato(int) | idNome(varchar)

Table -> Voto | idVoto(int) | Candidato_idCandidato(int) | DiaVotacao(date)

我正在创建一个网络投票系统,需要我更好地选择来完成我的图形,以显示每个候选人每天的总投票数。

Candidato = candidate | voto = vote | diaVotacao = voting day (english translation)

我需要这样的回应:

|VotingDay---------|-----Candidate1----------|-----Candidate2------|--Candidate3

|2014-05-14-------|---13(total votes)---------|------------4------------|-----------10|

|2014-05-15-------|---18(total votes)---------|------------0------------|------------8|

到目前为止我得到了这个:

|VotingDay---------|-----TOTAL Votes----------|-----Name------|

|2014-05-14-------|---13(total votes)---------|-Candidate1

|2014-05-14-------|---18(total votes)---------|-Candidate2

|2014-05-15-------|---10(total votes)---------|-Candidate1

|2014-05-15-------|----8(total votes)---------|-Candidate2

我使用了以下代码:

SELECT voto.DiaVotacao, IFNULL(COUNT(voto.Candidato_idCandidato),0) as Votos, candidato.Nome FROM candidato LEFT OUTER JOIN voto ON voto.Candidato_idCandidato=candidato.idCandidato GROUP BY voto.DiaVotacao, voto.Candidato_idCandidato

请注意,我想要计算每个候选人每天的票数,如果没有票数,则显示数字 0 表示没有票数大家明白了吗?

最佳答案

您需要生成候选人和日期的完整列表,然后执行 left outer join 。您可以从 votos 获取天数列表表。

请注意,当您使用count(<column>)时,它将返回 0如果所有值都是 NULL 。不需要ifull()coalesce() :

SELECT d.DiaVotacao, COUNT(v.Candidato_idCandidato) as Votos, c.Nome
FROM candidato c cross join
(SELECT DISTINCT v.DiaVotacao FROM voto v
) d LEFT OUTER JOIN
voto v
ON v.Candidato_idCandidato = c.idCandidato and
v.DiaVotacao = d.DiaVotacao
GROUP BY d.DiaVotacao, v.Candidato_idCandidato;

关于mysql - SQL 选择外连接和分组依据和 ISNULL ( COUNT ) HELP =x,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23727392/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com