-
Total de itens
3.089 -
Registro em
-
Última visita
Tudo que Denis Courcy postou
-
Pegar numero sequencial de outra tabela e fazendo incremento
pergunta respondeu ao Total := QryHora.FieldByN de Denis Courcy em MySQL
Oi, 'Total := QryHora.FieldByN' Você já leu sobre algorítimos de lista encadeada e lista duplamente encadeada? Sua solução, provavelmente, está neste algorítimo. -
Função contraria a INSERT INTO ( função para remover )
pergunta respondeu ao zimmer de Denis Courcy em MySQL
Oi, 'zimmer' Ações possíveis em SQL. DELETE FROM nome-da-tabela = Exclusão de registros (linhas) da tabela INSERT INTO nome-da-tabela = Inclusão de registros (linhas) da tabela UPDATE nome-da-tabela = Alteração de atributos(campos/colunas) da tabela SELECT <nome-dos-atributos> FROM nome-da-tabela = Lê informações da tabela. Para maiores informações consulte o capítulo 6 do manual do MySQl versão 4.1 (tradução em português) -
Oi, 'Rogério Filho' ! Não sei o tamanho desta tabela "chat". Mas se for grande o impacto na ordenação poderá estar causando o erro que você relatou. Experimente criar um índice descendente por "cod" CREATE INDEX cod_inv ON chat (cod DESC) e force o uso do índice em seu sqlSELECT * FROM chat USE INDEX (cod_inv)") Experimente criar
-
[problema] Não consigo conecta ao phpmyadmin de meu host.
pergunta respondeu ao GOD Viollator de Denis Courcy em PHP
Movendo MySQL -->> PHP -
Oi, 'Leticia Carvalho' Crie uma tabela temporária (Física/Persistente) que contenha os mesmos atributos da planilha a ser exportada. Exporte de Excel para CSV e importe o CSV com LOAD DATA LOCAL INFILE para esta tabela. Depois, faça a movimentação para as demais tabelas usando INSERT INTO ... SELECT ... FROM tab_temporaria. Para mais detalhes sobre o uso destes comandos leia o manual do MySQL varsão 4.1 (tradução em português)
-
Oi, 'Audacter'! Você tem que instalar o MySQL. Apesar de ter os arquivos não há a certeza de que você consiga abri-los pois há a necessidade do banco MySQL reconhecer estas tabelas como sendo dele. Ver tópicos: Quero aprender, Sou novato na área, espero a ajuda de vocês ! Recuperar banco de dados pelo ibdata1 Diretorio Mysql, Não consigo acessar as pastas
-
Oi, 't0th' Em nenhum dos casos usou indice para produtos e quem está afetando isto é o JOIN (parece normal). Tente mais uma vez assim EXPLAIN SELECT STRAIGHT_JOIN SQL_CACHE produtos.nome, produtos.preço, lojas.nome AS nomeLoja, site, produtos.id FROM produtos USE INDEX (prod_nome) INNER JOIN lojas ON lojas.id = produtos.lojas_id WHERE ((MATCH (produtos.nome) AGAINST ('+notebook' IN BOOLEAN MODE)) OR LOCATE('nb', produtos.nome) <> 0)AND lojas.publish =1 Se der certo retire o EXPLAIN do comando acima e veja em quanto tempo ele retorna o resultado. Outra coisa. Existe índice para lojas.publish ?
-
Não. Somente acrescente mais este índice.
-
Oi, 't0th' Já que você não pode fazer um ajuste mais refinado em ft_min_word_len, vamos ter que buscar de outra forma e tentar evitar um TABLE SCAN. Faça: CREATE INDEX prod_nome ON produtos (nome); Tente:EXPLAIN SELECT SQL_CACHE produtos.nome, produtos.preço, lojas.nome AS nomeLoja, site, produtos.id FROM produtos INNER JOIN lojas ON lojas.id = produtos.lojas_id WHERE (MATCH (produtos.nome) AGAINST ( '+notebook' IN BOOLEAN MODE) OR LOCATE('nb', produtos.nome) <> 0) AND lojas.publish =1 O explain serve para ver se a query está usando os indices. Se não estiver usando o indice prod_nome então force o uso dele conforme abaixo. EXPLAIN SELECT SQL_CACHE produtos.nome, produtos.preço, lojas.nome AS nomeLoja, site, produtos.id FROM produtos USE INDEX prod_nome INNER JOIN lojas ON lojas.id = produtos.lojas_id WHERE (MATCH (produtos.nome) AGAINST ( '+notebook' IN BOOLEAN MODE) OR LOCATE('nb', produtos.nome) <> 0) AND lojas.publish =1 Retire o explain, teste a saída, veja o resultado e reporte.
-
Oi, 'Marcio Dias' Pode sim.Neste caso, @num deverá ser declarado dentro da função com o nome de "num" sem o "@"
-
Oi, 't0th' Por que você não usa somente uma pesquisa em match? Veja o exemplo abaixo se funciona SELECT sql_cache produtos.nome,produtos.preço,lojas.nome as nomeLoja, site, produtos.id FROM produtos inner join lojas on lojas.id = produtos.lojas_id WHERE MATCH (produtos.nome) AGAINST ( CONCAT('+notebook', " ", '+nb ' IN BOOLEAN MODE)) and lojas.publish = 1Faça o teste e reporte o resultado.
-
Oi, 'Spawnzao'! Vamos por parte pois as derivações PODEM ser muitas. (Podem não quer dizer que serão). Você disse: Vamos tratar destes dois problemas acima, em primeiro lugar. Primeiro problema: Arquivos de log binério mysql-bin.000001 mysql-bin.000002 mysql-bin.000003 São arquivos gerados pelo log de transação, do MySQL. Removê-los é ficar sem ter como restaurar dados entre um backup e outro. Removê-los da forma como você está fazendo é mais errado ainda, pois desestabilizará o servidor de banco. Os comandos corretos para remover o log binário são: RESET MASTER - para remover todos e PURGE MASTER LOGS - para remover apenas alguns arquivos. Este arquivo é gerado a cada vez que o comando flush -logs é acionado prlo mysqladmin, pelo comando FLUSH LOGS, a cada vez que o servidor é reiniciado e quando o log binário atinge o tamanho previsto em max_binlog_size. Você poder direcionar os arquivos do log binário para outro local. Disco, inclusive. (É o que eu faço e recomendo, pois se o disco principal quebrar eu posso restaurar minhas meus dados se o logbinário estiver em outro disco) Para direcionar o log binário para outro local altere a linha abaixo em seu my.cnflog-bin = /home/mysql/logs/mysql-bin.log Segundo problema: Corrompimento da tabela traffic. Este problema ocorre porque no restart do mysal os caches não estão sendo gravados (commited) no banco, deixando a tabela inconsistente. Certifique-se que o comando FLUSH TABLES está sendo executado antes de resetar o mysal.
-
Oi, "melhorar sempre" é o lema. Mas é bom que você teste primeiro e veja os resultados. Não esqueça que palavras compostas dentro das variáveis "processador", "cpu" e "intel", ou seja as variáveis dentro dos MATCHES de fulltext deverão estar entre aspas ou você terá surpresas ingratas nas respostas. Por exemplo: buscar por denis courcy trará todos os elementos com denis e todos os elementos com courcy independente de serem a mesma pessoa ou não, mas buscar por "denis courcy" só trará os elementos que corresponderem a string desejada.
-
Oi, 'Marcio Dias' O MySQL só permite executar SQL dinamicamente em STORAGE PROCEDURE. Poor isso modifiquei seu código para atender o que você quer. Veja abaixo: DELIMITER $$; DROP PROCEDURE IF EXISTS `meubanco`.`fcRetUltimoRegistro`$$ CREATE PROCEDURE `meubanco`.`fcRetUltimoRegistro` (campo char(30), tabela char(30), out i_ultimo integer ) BEGIN set @iSQL = concat("Select max(", campo, ") into @ultimo from ", tabela); prepare stmt from @iSQL; execute stmt; drop prepare stmt; set i_ultimo = (@ultimo + 1); END$$ DELIMITER;$$ Os testes foram baseados em minha tabela de testes chamada clientes. Veja abaixo a execução:select max(matricula ) from cliente; Retornou 323986. Executando sua procedure Call fcRetUltimoRegistro('matricula', 'cliente', @num); select @num;Retornou 323987.
-
Oi, 'Webster'! Reveja sua estrutura de dados, pois segui o exemplo fornecido no primeiro post para te passar a instrução. Veja abaixo o que você passou no primeiro post deste tópico:
-
Oi, 't0th' Os indices fulltext proporcionam buscas dinâmicas tais como as relaizadas pelo google. Veja o tópico abaixo e se você ainda tiver dúvidas não se acanhe em perguntar. (Resolvido) Pesquisa full text
-
Oi, 't0th' Não havia a necessidade de passar todas as tabelas para MyISAM. somente a tabela de produtos. Ao passar uma tabela para MyIsam ela perde a integridade referencial pois o engine MyISAM ignora relacionamento pai/filho entre tabelas. Neste caso seu controle passa a ser por programação através de sua linguagem de programação normal e/ou trigger, storage procedure, etc. O campo nome da tabela produtos é o indicado para indice fulltext, pois no select que você passou este é o campo que recebe a carga do LIKE. Dica.: Em suas consultas sempre verifique se os atributos em uma condição WHERE possuem indices. É sempre interessante criar índices para estes campos para que as consultas sejam aceleradas. Tome o cuidado de não criar índices demais, pois eles podem degradar o sistema, tembém.
-
Oi, 't0th'! Como você não respondeu até agora e para não deixar o povo sem saber qual é seu erro, aqui vai a dica. Passe a tabela produtos para o engine MyISAM e crie indices tipo FULLTEXT. Depois disso, elimine as pesquisas com LIKE, que são o maior atraso, pois provocam TABLE SCAN e põe abaixo toda a vantagem de usar indices..
-
Oi, 't0th' Já sei onde está seu erro. Mas para não restar dúvidas, por favor envie todos os índices da tabela produtos, com seus respectivos atributos(campos). Envie, também, o engine das tabelas (MyISAM, InnoDB, etc)
-
Oi, Anderson! convém que você estude sobre cursores e fetch em Storages procedures no MySQL. Oi, BRANCO_STYLE! Pesquisas através de cursores somente em storages procedures. se não for este o caso então é melhor que você controle através de índices únicos e /ou sua linguagem de programação. A procedure abaixo é um exemplo do uso de cursor. /* Procedure structure for procedure `inclui_em_teste1` */ drop procedure if exists `inclui_em_teste1`; DELIMITER $$; CREATE DEFINER=`root`@`localhost` PROCEDURE `inclui_em_teste1`() BEGIN DECLARE m_nome CHAR(60); DECLARE eof_teste INTEGER DEFAULT 0; /* cria a variavel que servirá de controle para EOF */ DECLARE cur_teste CURSOR FOR /* Cria o cursor que trabalhará o select */ SELECT nome FROM teste; DECLARE CONTINUE HANDLER FOR NOT FOUND SET eof_teste = 1; /* Cria a chave que verificará e mudará o valor da variavel de eof quando o select chegar ao final */ OPEN cur_teste; /* abre o select */ FETCH cur_teste INTO m_nome; /* Le a linha */ WHILE NOT m_eof DO START TRANSACTION; INSERT INTO teste1 (codigo, nome) VALUES ((SELECT (max(t1.codigo)+1) FROM teste1), m_nome); COMMIT; END WHILE; CLOSE cur_teste; /* fecha o select */ END$$ DELIMITER;$$
-
(Resolvido) Erro em utilização de Trigger mysql
pergunta respondeu ao CASSIOSSSS de Denis Courcy em MySQL
Oi, 'CASSIOSSSS' O MySQL não permite que você execute outra instrução SQL na mesma tabela dentro de um TRIGGER. Se não for este o seu caso, dê nome certo as tabelas usadas no exemplo para que possamos analisar melhor. -
Oi, 'Mestre SAM' Leia este tutorial, presente no manual do MySQL. 3.1. Conectando e Desconectando do Servidor
-
Oi, 'Wellington Magno' Sua pergunta não está relacionada diretamente com o banco MySQL, mas com algum erro de logiga no programa que você está usando. Movendo MySQl -->> PHP
-
Oi, 'Exacon' ! Se cove tem várias colunas e quer apresentar uma última coluna com um somatírio das colunas anteriores terá que fazer como abaixo: SELECT col1, col2, col3, (col1 + col2 + col3) AS Total FROM minhatabela Se você quer que o MySQl apresente como resultado, na última linha o total das somas das colunas, então você terá que usar a cláusula GROUP BY com uma variação chamada WITH ROLLUP. Exemplo:minhaTabela Col1 Col2 Arroz 5 Feijao 5 Arroz 4 Feijao 10 ExecutandoSELECT Col1, SUM(Col2) AS SOMA FROM minhaTabela GROUP BY Col1 WITH ROLLUP; Teremos:Col1 SOMA Arroz 9 Feijao 15 (NULL) 19
-
Oi, 'unisov' Para saber se um valor está em um "array" (do jeito que você pensa) você pode usar a função FIELD_IN_SET. Veja abaixo: set @var="casa,hotel,pensao"; select @var; select find_in_set('hotel',@var); select find_in_set('hotel',"casa,hotel,pensao");Esta função retorna a posição do elemento no "array". No caso do exemplo, o número 2; Se o elemento pesquisado não existir, então retornará zero. Outra característica é que o "array" não pode começar com virgula. Para retornar um elemento, fornecendo a posição deste no array, você deverá escrever uma função UDF (uma codificação semelhante a uma storage procedure).