Ygor Guedes
Members-
Total de itens
28 -
Registro em
-
Última visita
Tudo que Ygor Guedes postou
-
Senhores, bom dia! Gostaria de uma imensa ajuda pois neste momento estou com uma consulta que está levando muito tempo para ser concluída; via mysql. Gostaria de me fazer entender: 1. Na tabela status, recebo a cada 3 minutos, aproximadamente 500 registros. 2. Na tabela cadastro_ponto, estão os dados estáticos para pesquisa, que deveria estar entrelaçado com a tabela status. 3. Na tabela tab_garagens, também possui dados estáticos. 4. O campo em comum na tabela status e na tabela cadastro_pontos, é o campo onibus_ponto 5. O campo em comum na tabela cadastro_pontos e na tabela tab_garagens, é o campo local com o campo onibus_prefixo Minha consulta seria a seguinte: buscar apenas o último registro de cada agrupamento de dados (agrupado pelo campo onibus_ponto com MAX(data) em que estes fiquem diferentes de 4 minutos) com um join na tabela cadastro_pontos (para verificar se existe uma associação) e um último join na tabela tab_garagens (para verificar se existe um cadastro associado também). Hoje minha consulta está assim: SELECT s.id, s.onibus_ponto, s.data FROM status s JOIN cadastro_pontos c ON c.onibus_ponto = s.onibus_ponto JOIN tab_garagens t ON t.onibus_prefixo = c.local WHERE s.id = (SELECT id FROM status WHERE onibus_ponto = s.onibus_ponto ORDER BY data DESC LIMIT 1) AND data < (NOW() - INTERVAL 4 MINUTE) No entanto, ela está demorando muito tempo para realizar toda esta consulta (de 3 a 5 minutos). Alguma coisa não está certo e eu não entendo muito de SQL; tenho apenas conhecimentos superficiais. Outro detalhe: como inserir alguma coisa e fazer com que os dados se apaguem automaticamente, deixando sempre os mais novos, AGRUPADOS pela coluna onibus_ponto? Esta tabela, a cada dia, gera aproximadamente 13 mil registros. Se puderem me ajudar, fico agradecido! Minhas tabelas estão em anexo!
-
Bom dia Motta! Já pensei sim, porém, esta tabela é apenas uma informação sem importância; ela apenas pega o status do computador pra saber quando foi a última vez que ele comunicou com meu servidor. Por isso que a tabela está gigante. Eu não criei um robot pra isso, eu faço via SQL mesmo + ShellScript.
-
Motta, boa tarde! Sua consulta demorou também. Eu deixei minha consulta desse jeito (menor tempo que encontrei): SELECT m.onibus_ponto, data FROM status AS m INNER JOIN (SELECT onibus_ponto, MAX(data) AS data FROM status GROUP BY onibus_ponto) x USING(onibus_ponto, data) INNER JOIN cadastro_pontos AS c ON c.onibus_ponto = m.onibus_ponto WHERE data < (NOW() - INTERVAL 4 MINUTE) GROUP BY m.onibus_ponto No entanto, realmente, minha tabela está ficando imensa pelo fato de ter muitos registros em pouco tempo; já está na casa de 1 milhao de registros. Pensei bem e gostaria de excluir os antigos, por grupos (onibus_ponto). Queria excluir os dados mais antigos de cada grupo deixando uns 2 registros, os mais novos, apenas. Da imagem que segue, gostaria de deixar da coluna onibus_ponto apenas os 2 registros mais novos: (12/09/19 10 AM e 12/09/19 09 AM) - onibus_ponto 10 (12/09/19 09 AM e 12/09/19 07 AM) - onibus_ponto 5 (12/09/19 10 AM e 12/09/19 05 AM) - onibus ponto 4 O restante, eu gostaria de excluir tudo. Assim evita de ficar uma tabela com muitos dados.
-
Boa tarde pessoal! Criei meu .htaccess no meu servidor, xampp (wampp) para desenvolver umas páginas e bati cabeça em uma situação; não queira que ninguém acessasse minhas páginas com extensão .php e não queria que meu diretório ficasse visível também. Segue abaixo: RewriteEngine On #Reescreve URLs RewriteCond %{REQUEST_FILENAME} -f #Era pra remover a extenção .php das páginas RewriteRule ^(.*)$ $1.php [L] RewriteCond %{REQUEST_FILENAME} !-d #Não permite a listagem de diretórios Options -Indexes O que está acontecendo: 1. Se eu acesso minha página principal de login (login.php) sem a extensão até funciona porém ele não retira a extensão sozinha, de forma automática, ou seja, eu tenho que apagar a extensão, senão não funciona. 2. Se eu criar uma condição: RewriteRule . erro404.php [L] (que serve para direcionar para esta página caso não encontre uma página existente), a condição RewriteRule ^(.*)$ $1.php [L] deixa de funcionar. Se puderem me ajudar, agradeço.
-
Testei sua modificação meu caro; demorou muito na consulta também. :/
-
Pessoal, boa tarde! Gostaria muito da ajuda de vocês. Em anexo, segue uma imagem de um relacionamento que eu preciso fazer: O campo onibus_ponto é o campo que eu preciso realizar a foreign key; só que não estou conseguindo. Gostaria muito se alguém pudesse me ajudar. A ideia seria: realizar uma consulta, onde o campo onibus_ponto é único (não pode ter 2 registros com o mesmo número) buscando campos das outras 2 tabelas (tab_terminais e tab_garagens). Um resultado seria mais ou menos assim: Colunas => pontos.onibus_ponto | pontos.nome_computador | pontos.modulo | tab_terminais.terminal | tab_garagens.onibus_prefixo Obs: uso o banco de dados MySQL com o phpmyadmin e a consulta é em uma página PHP.
-
Felipe Guedes Deixa eu fazer mais uma explanação pra ver outro detalhe que me ocorreu; na tabela tab_garagens e na tabela tab_terminais, o campo onibus_ponto não possui duplicação, isso é fato. Agora na tabela pontos, é onde a informação chega; eu pego e faço uma consulta no PHP pra verificar em qual ônibus ou terminal esse ponto se encontra. Se ele achar, na tabela tab_garagens, pego o campo onibus_prefixo e se for na tabela tab_terminais, pego o nome do campo terminal. Por isso acreditaria que não precisaria de um relacionamento. Eu já tenho uma consulta assim com apenas as tabelas tab_garagens e pontos, e funciona perfeito. Segue: SELECT tab_garagens.onibus_ponto, tab_garagens.onibus_prefixo, nome_computador, imei, modulo, MAX(data) AS data FROM pontos INNER JOIN tab_garagens ON pontos.onibus_ponto = tab_garagens.onibus_ponto GROUP BY pontos.onibus_ponto O meu problema foi inventar a tabela tab_terminais, já que na consulta acima não aparece os registros, caso não encontre o onibus_ponto, em ambas tabelas.
-
Felipe, agradeço imensamente sua ajuda. Eu suspeitei que seria algo com relacionamento. É que eu ainda não peguei bem o lance de relacionamento; é uma parte que tenho dificuldade em aprender. Enfim, irei ter que trabalhar com alguma coisa do tipo; ver se coloco foreign_key nesse campo ou sei lá. Vou ter que ler umas 2x pra entender bem o que você explicou. Agradecido pela sua ajuda, qualquer coisa, estamos aí para ajudar também.
-
Felipe. Segue, abaixo, as imagens referente às consultas.
-
Felipe. Eu havia visto que estava errado o nome da tabela e já havia alterado na minha consulta. Não está retornando nada.
-
Bom dia Felipe Coutinho. Tudo certo? Seguinte, esta tua consulta não retornou nenhum dado no meu BD. Queria conciliar os dados das tabelas tab_garagens, tab_terminais e pontos em uma só. Queria unir alguns campos mas com a verificação pela coluna onibus_ponto, que é comum em todas.
-
Pessoal. Consegui resolver o problema. Faltou um MAX(data) AS data na consulta. Ficando assim: SELECT tab_garagens.onibus_ponto, tab_garagens.onibus_prefixo, MAX(data) AS data FROM pontos INNER JOIN tab_garagens ON pontos.onibus_ponto = tab_garagens.onibus_ponto
- 1 resposta
-
Boa tarde meu pessoal. Preciso da ajuda de vocês em uma consulta baseada em Inner Join + Group By. Irei deixar as tabelas e a consulta que eu tenho, para melhor visualização: Consulta: SELECT tab_garagens.onibus_ponto, tab_garagens.onibus_prefixo, data FROM pontos INNER JOIN tab_garagens ON pontos.onibus_ponto = tab_garagens.onibus_ponto Tabela pontos: | onibus_ponto | data | | 10 | 2019-06-03 12:00:00 | | 10 | 2019-06-03 12:10:00 | | 44 | 2019-06-03 12:00:00 | Tabela tab_garagens: | onibus_ponto | onibus_prefixo | | 10 | DE700 | | 44 | GL030 | A minha consulta está trazendo a informação mais antiga da data; o que eu preciso é tipo um ORDER BY com data mais recente, onde eu pego a data mais atual do registro agrupado na coluna 'onibus_ponto'. Eu gostaria que saísse assim: | onibus_ponto | onibus_prefixo | data | | 10 | DE700 | 2019-06-03 12:10:00 | | 44 | GL030 | 2019-06-03 12:00:00 | Se puderem me ajudar, fico agradecido
- 1 resposta