Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
select DISTINCT(registro.cm_idcm), cm.prefixo, registro.dataViagem, SUM(registro.quantidade), registro.local from registro inner join cm where cm_idcm = idcm ORDER BY prefixo
Bom dia, eu tenho uma tabela onde preciso exibir a quantidade de viagens realizadas por determinado caminhão por dia. Tentei agrupar os caminhões e somar a quantidade por data mas não consegui>
18 minutos atrás, BrunoMs disse:
Como você tem que somar essa quantidade? Você especifica uma data em uma input ou você especifica um caminhão? Pq dá pra fazer de diversas formas.
A forma mais básica é você puxar os dados pela data que você quer somar e ir somando dessa forma.
$data_que_vc_quer_somar = $_POST['data']; // pega de um formulário
$id_do_caminhao = $_POST['id_caminhao']; // pega de um formulário
//faz a sua conexão no banco de dados
$sql = "SELECT * FROM sua_tabela_onde_esta_as_datas WHERE data='$data_que_vc_quer_somar' AND caminhao='$id_do_caminhao'"; // vai pegar as datas que você quer somar as viagens junto com o caminhão especificado
$result = $conexao->query($sql);// compara a data que você quer com a data que o caminhão fez a viagem
if($data_que_vc_quer_somar == $lista_viagem['data']{
echo $soma_viagem++; // vai somando +1 a cada viagem encontrada do caminhão e a data especificada
}
}
$conexão->close();
Outra coisa que você pode fazer é pegar todos os caminhões da data X e mostrar em uma tabela com todas as viagens somadas, algo mais ou menos nessa lógica:
<table>
<th>soma</th>
<th>caminhão</th>
<?php
$data_que_vc_quer_somar = $_POST['data']; // pega de um formulário
// no lugar de "id_caminhao" você pode por o nome de identificação do caminhão ou pode por o ID numérico dele.
$lista_caminhao = array(0 => "id_caminhao1",
1 => "id_caminhao2",
2 => "id_caminhao3",
3 => "id_caminhao4",
4 => "id_caminhao5"
);
for($i = 0;$i < count($lista_caminhao);$i++){
// pega o array com os id's dos caminhões
$caminhao = $lista_caminhao[$i]; // vai passar por cada um da lista 0,1,2,3,4
//faz a sua conexão no banco de dados
$sql = "SELECT * FROM sua_tabela_onde_esta_as_datas WHERE data='$data_que_vc_quer_somar' AND caminhao='$caminhao'"; // vai pegar as datas que você quer somar as viagens junto com o caminhão especificado
$result = $conexao->query($sql);
// dá o ponto de partida pra contagem pra cada vez que o laço while terminar
$soma_viagem = 0;
while($lista_viagem = $result->fetch_assoc()){
// compara a data que você quer com a data que o caminhão fez a viagem
if($caminhao == $lista_viagem['caminhao'] AND $data_que_vc_quer_somar == $lista_viagem['data']{
echo "<tr>"
echo "<td>" . $soma_viagem++ . "</td>";
// vai somando +1 a cada viagem encontrada do caminhão e a data especificada
echo "</td>";
echo "<td>";
echo $caminhão;
echo "<td>";
echo "</tr>";
}
}// while $conexão->close();
?>
</table>
aí é só você adaptar aí o seu código pra essa lógica, você pode acrescentar informações por horário, dia, noite e com o tempo ir adicionando mais controle e mais funções pra fazer o monitoramento aí dos caminhões.
Boa tarde, gostei da ideia e vou usar essa ideia mais pra frente hahaha. Eu estou buscando os dados no mysql e exibindo eles direto do banco, não estou pegando os dados por meio de formulário. Preciso calcular quantas viagens determinado caminhão fez por diaPor exemplo, com esse script você consegue calcular a viagem que o caminhão fez hoje, com ele você pode exibir as viagens de hoje e também pode adicionar uma tabela de histórico (ex: tbl_historico_viagens) pra armazenar as viagens da data de hoje e criar um relatório/histórico de cada caminhão e a soma de suas viagens do dia:
<?php
$data_que_vc_quer_somar = date("Y-m-d");
$lista_caminhao = array(0 => "id_caminhao1",1 => "id_caminhao2",2 => "id_caminhao3",3 => "id_caminhao4",4 => "id_caminhao5");
for($i = 0;$i < count($lista_caminhao);$i++){
$caminhao = $lista_caminhao[$i];
$sql = "SELECT * FROM sua_tabela_onde_esta_as_datas WHERE data='$data_que_vc_quer_somar' AND caminhao='$caminhao'";
$result = $conexao->query($sql);
$soma_viagem = 0;
while($lista_viagem = $result->fetch_assoc()){
if($caminhao == $lista_viagem['caminhao'] AND $data_que_vc_quer_somar == $lista_viagem['data']{
echo $soma_viagem++;
/*
aqui dentro você pode fazer o que quiser com os caminhões que viajaram hoje
você pode armazenar em uma tabela no banco pra fazer um histórico, você pode exibir em um <table> etc.
*/
}
}// while
}// for
$conexão->close();
?>Pela sua query basta adicionar o WHERE data...="2017-10-05"
>
18 horas atrás, kinzinho disse:
Pela sua query basta adicionar o WHERE data...="2017-10-05"
Bom dia Kinzinho! eu acrescentei em meu script porém não deu certo. Segue abaixo meu script.
select DISTINCT(cm.prefixo), DISTINCT(registro.dataViagem), SUM(registro.quantidade), registro.local from registro inner join cm ON cm_idcm = idcm WHERE dataViagem = dataViagem ORDER BY prefixoTá errado..
Não vi a estrutura das tabelas, mas seria algo parecido com isso:
SELECT
cm.prefixo,
regi.dataViagem,
SUM(regi.quantidade),
regi.local
FROM registro AS regi
INNER JOIN cm ON cm.cm_idcm = regi.idcm
WHERE
regi.dataViagem = "2017-10-06"
GROUP BY
cm.prefixo
ORDER BY
regi.prefixo
>
8 minutos atrás, kinzinho disse:
Tá errado..
Não vi a estrutura das tabelas, mas seria algo parecido com isso:
SELECT
cm.prefixo,
regi.dataViagem,
SUM(regi.quantidade),
regi.local
FROM registro AS regi
INNER JOIN cm ON cm.cm_idcm = regi.idcm
WHERE
regi.dataViagem = "2017-10-06"
GROUP BY
cm.prefixo
ORDER BY
regi.prefixo
Ele da um erro, (pelo que eu entendi) como se não tivesse jeito de agrupar os dados

Isso é configuração do seu Mysql... Altera o sql_mode dele, remova o 'only_full_group_by' por ' ' (em branco)..
mysql > SET GLOBAL sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY',''));
depois reiniciar seu Mysql...
Como você tem que somar essa quantidade? Você especifica uma data em uma input ou você especifica um caminhão? Pq dá pra fazer de diversas formas.
A forma mais básica é você puxar os dados pela data que você quer somar e ir somando dessa forma.
//faz a sua conexão no banco de dados
while($lista_viagem = $result->fetch_assoc()){
// compara a data que você quer com a data que o caminhão fez a viagem
if($data_que_vc_quer_somar == $lista_viagem['data']{
// no lugar de "id_caminhao" você pode por o nome de identificação do caminhão ou pode por o ID numérico dele.
$lista_caminhao = array(0 => "id_caminhao1",
1 => "id_caminhao2",
2 => "id_caminhao3",
3 => "id_caminhao4",
4 => "id_caminhao5"
);
for($i = 0;$i < count($lista_caminhao);$i++){
// pega o array com os id's dos caminhões
$caminhao = $lista_caminhao[$i]; // vai passar por cada um da lista 0,1,2,3,4
//faz a sua conexão no banco de dados
}// for