Estou criando um sistema onde 4 candidatos são eleitos por maioria de votos. Sendo que o mais votado recebe a classificação de Presidente, o 2º mais votado recebe a classificação de Vice-Presidente, o 3º mais votado recebe Secretário e o 4º mais votado fica como Suplente. Mas se existir empate entre eles o critério de desempate seria por mais tempo de serviço em uma instituição. Não estou sabendo fazer o critério de desempate. Alguém tem alguma ideia? Esse é o código pra atribuir a classificação de acordo com o número de votos
<?php
$sql = "SELECT `qnt_voto` FROM `votos` WHERE `qnt_voto` = (SELECT MAX(`qnt_voto`) FROM `votos`)";
$sql = $conexao->query($sql);
$row = $sql->fetch_assoc();
$row5 = $row['qnt_voto'];
$_SESSION['num'] = $row5;
if($sql == true){
$colocacao = "UPDATE votos SET status_voto = 'Presidente'
WHERE qnt_voto = '".$_SESSION['num']."'";
$colocacao_resultado = mysqli_query($conexao, $colocacao);
}
$sql = "SELECT MAX(`qnt_voto`) FROM `votos` WHERE `qnt_voto` < (SELECT MAX(`qnt_voto`) FROM `votos`)";
$sql = $conexao->query($sql);
$row = $sql->fetch_assoc();
$row5 = $row['MAX(`qnt_voto`)'];
$_SESSION['num2'] = $row5;
if($sql == true){
$colocacao = "UPDATE votos SET status_voto = 'Vice-Presidente'
WHERE qnt_voto = '".$_SESSION['num2']."'";
$colocacao_resultado = mysqli_query($conexao, $colocacao);
}
$sql = "SELECT MIN(`qnt_voto`) FROM `votos` WHERE `qnt_voto` > (SELECT MIN(`qnt_voto`) FROM `votos`)";
$sql = $conexao->query($sql);
$row = $sql->fetch_assoc();
$row5 = $row['MIN(`qnt_voto`)'];
$_SESSION['num3'] = $row5;
if($sql == true){
$colocacao = "UPDATE votos SET status_voto = 'Secretário'
WHERE qnt_voto = '".$_SESSION['num3']."'";
$colocacao_resultado = mysqli_query($conexao, $colocacao);
}
$sql = "SELECT `qnt_voto` FROM `votos` WHERE `qnt_voto` = (SELECT MIN(`qnt_voto`) FROM `votos`)";
$sql = $conexao->query($sql);
$row = $sql->fetch_assoc();
$row5 = $row['qnt_voto'];
$_SESSION['num4'] = $row5;
if($sql == true){
$colocacao = "UPDATE votos SET status_voto = 'Suplente'
WHERE qnt_voto = '".$_SESSION['num4']."'";
$colocacao_resultado = mysqli_query($conexao, $colocacao);
Pessoal boa noite, sou novo no fórum e estou precisando da ajuda de vocês no mysql.
Seguinte: Tenho uma tabela com o nome de tbl_candidados essa tabela guarda a inscrição, nome_cand, idade, nota_total, tempo_serv, form_profissional, data_nasc.
Veja o que preciso, para exibir em uma mesma grid.
1 - Selecionar na tabela os candidatos que tiveram a maior nota em ordem decrescente,
Se houver empate:
2 - se o candidato ao cargo tiver idade >= 60 anos, está classificado,
3 - caso não tenha candidatos ao cargo que possua 60 anos ou mais, terei que classificar conforme a maior nota de tempo_serv,
e se tiver notas com valores iguais,
4 - classifico pela formação profissional de acordo com a maior nota, agora se houver empate classifico pela data de nascimento, observando dia/mes/ano de nascimento.
TRADUZINDO
Exibo a nota total de todos os candidatos,
Caso houver empate:
Verifico se tem algum candidato com idade igual o ou maior que 60 anos, se sim está classificado e se der empate verifico a maior nota de tempo de serviço e se tiver empate na nota de tempo de serviço verifico a nota de formação profissional e se houver empate, classifico pela data de nascimento dia/mes/ano.
Caso não tenha candidatos com 60 anos ou mais, faço a classificação pelo tempo de serviço (maiores notas) se tiver notas iguais, classifico pela nota de formação profissional e se mesmo assim houver empate classifico pela data de nascimento dia/mes/ano.
Caso ainda haja empate será no par ou impar.
Agora como posso montar isso no mysql estou utilizando php e mysql, peço ajuda dos colegas, pois meio leigo no mysql, conheço pouco.
Estou criando um sistema onde 4 candidatos são eleitos por maioria de votos. Sendo que o mais votado recebe a classificação de Presidente, o 2º mais votado recebe a classificação de Vice-Presidente, o 3º mais votado recebe Secretário e o 4º mais votado fica como Suplente. Mas se existir empate entre eles o critério de desempate seria por mais tempo de serviço em uma instituição. Não estou sabendo fazer o critério de desempate. Alguém tem alguma ideia? Esse é o código pra atribuir a classificação de acordo com o número de votos
<?php
$sql = "SELECT `qnt_voto` FROM `votos` WHERE `qnt_voto` = (SELECT MAX(`qnt_voto`) FROM `votos`)";
$sql = $conexao->query($sql);
$row = $sql->fetch_assoc();
$row5 = $row['qnt_voto'];
$_SESSION['num'] = $row5;
if($sql == true){
$colocacao = "UPDATE votos SET status_voto = 'Presidente'
WHERE qnt_voto = '".$_SESSION['num']."'";
$colocacao_resultado = mysqli_query($conexao, $colocacao);
}
$sql = "SELECT MAX(`qnt_voto`) FROM `votos` WHERE `qnt_voto` < (SELECT MAX(`qnt_voto`) FROM `votos`)";
$sql = $conexao->query($sql);
$row = $sql->fetch_assoc();
$row5 = $row['MAX(`qnt_voto`)'];
$_SESSION['num2'] = $row5;
if($sql == true){
$colocacao = "UPDATE votos SET status_voto = 'Vice-Presidente'
WHERE qnt_voto = '".$_SESSION['num2']."'";
$colocacao_resultado = mysqli_query($conexao, $colocacao);
}
$sql = "SELECT MIN(`qnt_voto`) FROM `votos` WHERE `qnt_voto` > (SELECT MIN(`qnt_voto`) FROM `votos`)";
$sql = $conexao->query($sql);
$row = $sql->fetch_assoc();
$row5 = $row['MIN(`qnt_voto`)'];
$_SESSION['num3'] = $row5;
if($sql == true){
$colocacao = "UPDATE votos SET status_voto = 'Secretário'
WHERE qnt_voto = '".$_SESSION['num3']."'";
$colocacao_resultado = mysqli_query($conexao, $colocacao);
}
$sql = "SELECT `qnt_voto` FROM `votos` WHERE `qnt_voto` = (SELECT MIN(`qnt_voto`) FROM `votos`)";
$sql = $conexao->query($sql);
$row = $sql->fetch_assoc();
$row5 = $row['qnt_voto'];
$_SESSION['num4'] = $row5;
if($sql == true){
$colocacao = "UPDATE votos SET status_voto = 'Suplente'
WHERE qnt_voto = '".$_SESSION['num4']."'";
$colocacao_resultado = mysqli_query($conexao, $colocacao);
}
Compartilhar este post
Link para o post
Compartilhar em outros sites