Ir para conteúdo

Ygor Guedes

Members
  • Total de itens

    28
  • Registro em

  • Última visita

Tudo que Ygor Guedes postou

  1. Ygor Guedes

    Consulta em 3 tabelas

    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!
  2. Ygor Guedes

    Consulta em 3 tabelas

    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.
  3. Ygor Guedes

    Consulta em 3 tabelas

    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.
  4. Ygor Guedes

    Arquivo .htaccess

    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.
  5. Ygor Guedes

    Consulta em 3 tabelas

    Testei sua modificação meu caro; demorou muito na consulta também. :/
  6. Ygor Guedes

    Realizando JOIN

    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.
  7. Ygor Guedes

    Realizando JOIN

    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.
  8. Ygor Guedes

    Realizando JOIN

    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.
  9. Ygor Guedes

    Realizando JOIN

    Felipe. Segue, abaixo, as imagens referente às consultas.
  10. Ygor Guedes

    Realizando JOIN

    Felipe. Eu havia visto que estava errado o nome da tabela e já havia alterado na minha consulta. Não está retornando nada.
  11. Ygor Guedes

    Realizando JOIN

    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.
  12. Ygor Guedes

    [RESOLVIDO] Inner Join com Group By

    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
  13. Ygor Guedes

    [RESOLVIDO] Inner Join com Group By

    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
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.