Ir para conteúdo
Fórum Script Brasil

Denis Courcy

Moderadores
  • Total de itens

    3.089
  • Registro em

  • Última visita

Tudo que Denis Courcy postou

  1. Denis Courcy

    Select Estados

    'gapaia44' Você está programando em que linguagem? Pergunto isto porque sua dúvida não é mais pertinente a MySQL e vou transferir este tópico para a área da linguagem que você usa.
  2. Denis Courcy

    Select Estados

    Alterando a consulta: SELECT e.UF AS UF, c.nome AS Cidade, b.nome AS Bairro, p.nome AS Profissao, COUNT(cli.id) AS QT_Clientes FROM `cliente` cli INNER JOIN `dados_estados` e ON e.id = cli.id_estado INNER JOIN `dados_cidades` c ON c.id = cli.id_cidade INNER JOIN `dados_bairros` b ON b.id = cli.id_bairro INNER JOIN `profissoes` p ON p.id = id_profissao WHERE p.nome = <a profissao que voce quer> GROUP BY e.UF, c.nome, b.nome, p.nome; Neste caso mais uma modificação será necessária nas tabelas de profissões e clientes: Tabela clienteALTER TABLE cliente ADD INDEX cli_001 (id_estado), ADD INDEX cli_002 (id_cidade), ADD INDEX cli_003 (id_bairro), ADD INDEX cli_004 (id_profissao); Tabela profissoesALTER TABLE profissoes ADD INDEX profiss_001 (nome); Alterações semelhantes podem ser efetuadas nas tabelas bairro, estado e cidade para a pesquisa pelos campos "nome" em cada tabela destas.
  3. Denis Courcy

    Select Estados

    Oi, 'gapaia44'! Primeiro, você precisa fazer algumas modificações na estrutura de sua tabela de clientes. Elas visam compatibilisar as ligações entre as tabelas. As modificações são estas: ALTER TABLE `cliente` MODIFY id_cidade int not null default 0, MODIFY id_estado int not null default 0, CHANGE bairro id_bairro int not null default 0, CHANGE profissao id_profissao int not null default 0; Segundo, você deverá verificar se os dados destes campos não foram dropados. Se foram, então você deve corrigí-los antes de passar ao próximo passo. Terceiro, sua consulta:SELECT e.UF AS UF, c.nome AS Cidade, b.nome AS Bairro, p.nome AS Profissao, COUNT(cli.id) AS QT_Clientes FROM `cliente` cli INNER JOIN `dados_estados` e ON e.id = cli.id_estado INNER JOIN `dados_cidades` c ON c.id = cli.id_cidade INNER JOIN `dados_bairros` b ON b.id = cli.id_bairro INNER JOIN `profissoes` p ON p.id = id_profissao GROUP BY e.UF, c.nome, b.nome, p.nome;
  4. Denis Courcy

    permissao php + mysql

    Movendo MySQL -->> PHP
  5. Oi, 'Fabricio Fachini'! Observe este código na SP func_corrigeid else update usuarios set id = var_idvago where id = var_ultimoid; end if; Veja a lógica: cada vez que você chama uma alteração (inclusão/alteração/exclusão) em usuário a trigger é acionada e chama a SP func_atualiza_aplicaocontrole. Esta SP faz uma atualização em aplicacontrole e esta segunda tabela (aplicacontrole) chama a SP func_corrigeid que lê a tabela tmp_identificadores e procura por um "id vago". Ao encontrar o "id vago" ele promove uma atualização na tabela usuarios e então, começa tudo de novo. Indefinidamente. Pense em uma solução que não crie a recursividade.
  6. Experimente colocar no primeiro trigger o código que estava denntro do segundo trigger após a atualização da segunda tabela. Em tese ficaria assim: trigger dentro da priemeira tabela atualiza segunda tabela atualiza primeira tabela com dados da segunda tabela. Outra alternativa seria por SP (storage procedure)
  7. Oi, Fabricio Fachini! Realmente o MySQl não possui este recurso, ainda. Ele entende que isto é recursividade e bloqueia a ação.
  8. Denis Courcy

    duvidas com mysql

    Oi, 'Rudimar' O que você está comparando aqui? recolhimentos.ano_mes_recol >= '" . $ano_mes_inicial . "')and (" .$sql2 . ")
  9. Não seja por isso. Movendo de volta para PHP.
  10. Oi, 'Marcos Adilson' Como eu disse no post anterior, só por programação na linguagem que você usa. Você é que terá de controlar isso. O mySQl não faz essa mágica.
  11. Oi, 'Marcos Adilson'! O que você quer só é possível via programação. Por padrão um resultado de um select é uma tabela (temporária em memória), que no seu caso terá: Estado, Cidade, Nome, Telefone. Assim, se houver repetição no nome do estado, este será listado tantas quantas forem as repetições. O mesmo vele para os outros campos.
  12. Oi, 'coopermine' Usando seu exemplo teria: select codsistema, vencimento, datediff(now(), vencimento) as diasvenc from mensalidade where baixa = "não"; O exemplo acima só mostra o resultado que você quer. Para atualizar os danos na tabela de modo que você possa usar o SEU select, seria assim:UPDATE mensalidade set diasvenc = datediff(now(), vencimento) where baixa = "não"; TESTA ANTES DE FAZER O UPDATE. Faça backup antes para evitar caca. Não me responsabilizo por erros em seus dados.
  13. Passa um trecho com o select e com parte das estruturas das tabelas que você está trabalhando. Não precisa passar toda a estrutura da tabela e nem usar os nomes verdadeiros dos campos, mes precisa passar o tipo dos campos e quais indices são chave.
  14. data de vencimento é campo de sua tabela desta tabela ou outra tabela? dia atual é campo de sua tabela? se não for use NOW() Sem mais detalhes está difícil de ajudar.
  15. Oi,'coopermine' ! A função DateDiff funciona como abaixo: A instrução seria mais ou menos assim: UPDATE diasvencidos SET campo = DATEDIFF(data1, data2); Se precisar mais detalhes, especifique.
  16. Já postei aqui, algumas vezes, sobre como trocar a senha do banco (root). Portanto esta náo é uma solução boa. O banco MySQL oferece o lock de string que pode ser acionado com a função Get_Lock(). Talvez esta seja uma saída melhor, pois não importa se o banco tem senha ou não. Quando atingir um limite imposto por você, em seu código, Ele não vai deixar passar. Se você optar por isso posso te explicar melhor. É necessário que a versão do MySQl seja superior a 6.02, se não me falha a memória, para servidores windows, pois há um erro do Sistema operacional que a MySQl contornou só após a versão 6.
  17. SELECT nome, rg, cpf, telefone, email FROM <nome_da_tabela> WHERE nome = "Corrigidos" or rg = "Corrigidos" or cpf = "Corrigidos" or telefone = "Corrigidos" or email = "Corrigidos";
  18. Basicamente, sim. No exemplo que usei dividi as tabelas conforme o tipo de acesso. Por exemplo no banco cadastros ficaram as tabelas que possuem um rítmo menor de escrita (insert, update e delete), enquanto que no banco operacional ficaram as tabelas com maior frequência de atualizações. Este tipo de divisão pode facilitar na criticidade do backup do banco, por exemplo.
  19. Oi, 'neo_soro'! Pelo que vi e entendi de seu modelo você precisa colocar o atributo idatendente da tabela atendente nas tabelas agenda e historico, somente. Pois, assim, você saberá quem estava atendendo aquela ocorrência.
  20. Depende do que você se refere como "a cada tipo de assunto". A diferença entre usar um ou mais bancos será na quantidade de threads geradas e o trabalho a mais de informar de que banco vem a informação. Por exemplo, se existe um banco de cadastros onde ficam somente os cadastros tipo cliente, fornecedor, produtos, etc; e outro banco que chamaremos de operacional, onde ficam as transações de pedidos, estoque, contas a pagar, receber, etc. Se fizer um select com informações você terá: SELECT * FROM operacional.pedidos p INNER JOIN cadastros.clientes c ON p.idcliente = c.idcliente;
  21. Agora sua dúvida volta a ser em PHP. Movendo de volta MySQL --->>> PHP
  22. Oi, 'Luizzzzzzzzzzzzzzzz'! Pelo que você passou, montei este DER em anexo. A solução mais simples que posso opnar aqui, com o material que tenho, é incluir na tabela Eventos, o atributo codVinculo da tabela vinculo. Eventos_da_escola.pdf
  23. Exatamente. Primeiro, usando o índice, ele vai separar as ocorrências com o ID igual ao "valor inserido" Depois, vai buscar o maior valor de ts para este id.
  24. Oi, 'Roberto Polen' ! Não entendo de PHP. Seu erro não está no SQL. Pelo que tenho acompanhado há um ponto antes e depois da variável que é utilizada em php em conjunto com o sql. Não seria assim? $sql = "DELETE FROM vip WHERE Char = '.$Char.'"; Se não for assim posso transferir este tópico para a área de PHP.
  25. Oi, 'Tiago Ravache' ! está faltando um espaço na frente do ORDER BY. Na concatenação da string o MySQL não conseguiu distinguir onde terminava a cláusula WHERE e onde começava a cláusula ORDER BY. Tenta de novo. "SELECT not_id, not_title FROM tb_noticias WHERE not_id <>" .$row_rsultimasnoticias['not_id']. " ORDER BY not_id DESC LIMIT 5";
×
×
  • Criar Novo...