-
Total de itens
3.089 -
Registro em
-
Última visita
Tudo que Denis Courcy postou
-
'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.
-
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.
-
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;
-
Movendo MySQL -->> PHP
-
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.
-
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)
-
Oi, Fabricio Fachini! Realmente o MySQl não possui este recurso, ainda. Ele entende que isto é recursividade e bloqueia a ação.
-
Oi, 'Rudimar' O que você está comparando aqui? recolhimentos.ano_mes_recol >= '" . $ano_mes_inicial . "')and (" .$sql2 . ")
-
Não seja por isso. Movendo de volta para PHP.
-
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.
-
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.
-
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.
-
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.
-
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.
-
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.
-
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.
-
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";
-
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.
-
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.
-
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;
-
duvida formulario, botao adicionar campo consultar.
pergunta respondeu ao heldersm de Denis Courcy em PHP
Agora sua dúvida volta a ser em PHP. Movendo de volta MySQL --->>> PHP -
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
-
(Resolvido) Index campo de forma decrescente no mysql
pergunta respondeu ao prod de Denis Courcy em MySQL
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. -
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.
-
(Resolvido) Select não está funcionando
pergunta respondeu ao Tiago Ravache de Denis Courcy em MySQL
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";