-
Total de itens
3.089 -
Registro em
-
Última visita
Tudo que Denis Courcy postou
-
(Resolvido) Problemas com tabelas temporarias e NULL
pergunta respondeu ao RSalvador de Denis Courcy em MySQL
Oi, 'RSalvador', A criação de tabelas temporárias segue a sintaxe abaixo:CREATE TEMPORARY TABLE temp ( <sua definição de atributos e indices> )ENGINE= MEMORY; O engine Memory força a criação em memória se a quantidade de registros ultrapassar um limite previamente estabelecido pelo MySQL ele descarrega em disco. Usando seu exemplo, teremos:CREATE TEMPORARY TABLE temp SELECT * FROM clientes LEFT JOIN notafisc ON clientes.id= notafisc.id; Neste caso ele vai usar a definição de atributos retornados pelo * do relacionamento entre as duas tabelas. Se existir mesmo nome de campo em ambas as tebelas o MySQL retornará um erro ou criará um nome qualquer para representar o campo. Para evitar este erro use:CREATE TEMPORARY TABLE temp (campo1 <tipo-tamanho>, campo2 <tipo_tamanho>,..., campoN <tipo-tamanho>) SELECT campo1, campo2, ..., campoN FROM clientes LEFT JOIN notafisc ON clientes.id= notafisc.id; -
(Resolvido) Problemas com tabelas temporarias e NULL
pergunta respondeu ao RSalvador de Denis Courcy em MySQL
Oi, 'RSalvador'! Primeiro problema A solução é:SELECT * FROM clientes WHERE idcliente NOT IN (SELECT DISTINCT idcliente FROM notafisc); Segundo Problema Você esqueceu de separar os comandos CREATE TABLE e INSERT com ponto-e-virgula. Para que ao criar a tabela os dados fossem carregados automaticamente, você deveria usar conforme o exemplo abaixo(extraido do manual do MySQL)CREATE TABLE artists_and_works SELECT artist.name, COUNT(work.artist_id) AS number_of_works FROM artist LEFT JOIN work ON artist.id = work.artist_id GROUP BY artist.id; Terceiro Problema Você usou a comparação de forma errada. para comparar se uma variável é nula use IS NULL, conforme o exemplo abaixo:SELECT * FROM Temp WHERE nota IS NULL; -
(Resolvido)Dúvida na importação de informações
pergunta respondeu ao mauro_braga de Denis Courcy em PHP
Oi,'mauro_braga' Este não é um erro padrão do MySQL. Parece ser um erro de timeout de sua aplicação. Experimente exportar os dados do excel para txt e importar para o mysql usando o load data infile. Será muito rápido. Movendo MySQL-->> PHP -
(Resolvido) Erro após inserir a última linha do arquivo texto
pergunta respondeu ao Andreia Regina de Denis Courcy em MySQL
Oi Andreia! Por padrão todos os arquivos tem um marcador de EOF. Parece que seu algorítimo não está lendo ou entendendo este marcador e o último registro (o registro além do último lido de seu arquivo) está inválido para o MySQL. Experimente criar uma tabela temporária com a seguinte estrutura: CREATE TEMPORARY TABLE temp ( ano char(4), mes char(2), codigo char(5), tipo_desconto char(13), valor char(4), antecipado char(4), pgto_antecipado char(4), saldo char(4) ) ENGINE = MEMORY; e dar uma carga nela assim:LOAD DATA INFILE 'arquivo.txt' INTO TABLE temp FIELDS TERMINATED BY '|' LINES TERMINATED BY '\n''; Faça as mudanças para que ele aceite os números decimais, assim:UPDATE temp SET valor = replace(valor, ',', '.'), antecipado = replace(antecipado, ',', '.'), pgto_antecipado = replace(pgto_antecipado, ',', '.'), saldo = replace(saldo , ',', '.');Depois, é só dar carga na tabela correta e dropar a tabela temporária. P.S.: NÃO ESQUEÇA LINES TERMINATED BY '\n' é para arquivos texto que foram gerados no LINUX/UNIX. Se o arquivo TXT foi gerado no WINDOWS/DOS use LINES TERMINATED BY '\n'. -
(Resolvido) Erro após inserir a última linha do arquivo texto
pergunta respondeu ao Andreia Regina de Denis Courcy em MySQL
Oi 'Andreia Regina' ! pelo que vi, e pode estar errado por ser uma cópia, está faltando o ponto-e-virgula no final da instrução insert; Verifique se o arquivo não possui caracteres estranhos ou falta sinalização entre uma instrução e outra. Este erro indica que algo foi escrito errado e o motor do MySQl não está conseguindo depurar. -
Oi, 'Frega' ! Verifique se este tópico responde sua questão: (Resolvido) Retornar Consulta na mesma linha, Pivot (com string) Se não, procure por PIVOT. Se não encontrar nada, tentaremos uma solução.
-
Oi, 'Taichou' ! Desculpe pelo mico. Reli o manual e a conclusão é que não é possível dar qualquer comando (insert/update ou delete), para a mesma tabela, dentro da trigger que está sendo executada. Não é possível, também, chamar uma storage procedure ou função, que faça esta tarefa (insert/update ou delete para a mesma tabela), dentro da trigger. A solução é via programação. Após você commitar a transação, dê um update para atualizar os dados necessários.
-
No caso do primeiro post, quando a trigger foi disparada ela tentou gravar a informação no registro atual (o novo registro), mas não soube como gravar a informação porque não havia indicação de que tipo de informação Nova (NEW) ou antiga (OLD) ele deveria usar. Um outro erro foi na forma de como você escreveu a lógica. Você mandou que ele atualizasse somente a linha nova que estava gravando. Sempre que for escrever uma trigger pense em como seriam as instruções se não houvesse trigger (se você tivesse que fazer na mão). A correto é: DELIMITER $$; CREATE TRIGGER testeref AFTER INSERT ON ator FOR EACH ROW BEGIN UPDATE ator SET IndicacaoOscar = IndicacaoOscar + 1 WHERE Idade > 40; END $$ DELIMITER;$$
-
Oi, 'Taichou' Pode, por favor, explicar melhor sua idéia? Ainda não está claro como posso ajudá-lo.
-
Como colocar texto em ordem alfabética no Corel ?
pergunta respondeu ao César DF de Denis Courcy em Corel Draw
Este questionamento não se refere ao Banco de dados MySQL. Movendo MySQL -->> Corel Draw -
Este tópico não pertence a área de MySQL. Movendo MySQL -->> PHP
-
(Resolvido) É possível fazer essa consulta ou gerar essa VIEW no MYSQL
pergunta respondeu ao Neemias de Denis Courcy em MySQL
Oi, 'Neemias' Leia este tópico: (Resolvido) Retornar Consulta na mesma linha, Pivot (com string) -
Use tabela temporária com engine memory. Não ocuparão espaço em disco e você pode dropá-las da memória ao final da execução da procedure. A sintaxe para criação deste tipo de tabela é: CREATE TEMPORARY TABLE <nome-da-tabela> ( <campo 1> <definicao de campo 1>, ... <campo n> <definicao de campo n>, primary key (<campo x>) )ENGINE MEMORY;
-
Oi, 'Diogo de Freitas' A maneira mais eficiente, apesar de você não querer utilizá-la é guardar em uma tabela. Eu tenho diveras tabelas de domínios que guardam apenas o id e a descrição ou o nome. Tabelas que mantém de 2 a n registros (muitas não passando de 10 registros). Um exemplo clássico é a tabela de tipo_estado_civil com os domínos solteiro, casado, divorciado, separado, viuvo, etc. Outro exemplo é estados_brasileiros, e muitos mais.
-
Oi, Diogo! O MySQL não tem o tipo Array(vetor). Você pode simular usando um varchar e procurando com a função substring. Não sei qual seu objetivo neste tipo de pesquisa, mas desaconselho o uso de array. Não é uma forma inteligente de guardar ou recuperar informações em bancos de dados.
-
Oi, '*FIT*' A partir da versão 5.x, apesar de continuarem disponíveis para efeito de compatibilidade com versões anteriores, você não deverá utilizar os tipos NUMERIC e DECIMAL para representar os números inteiros e decimais, respectivamente. Use os tipos INTEGER (TINYINT, SMALLINT, INTEGER, INT, MEDIUMINT ou BIGINT) para representar os números inteiros e o tipo DOUBLE para representar os números decimais. Lembro que a separação das casas decimeis é no formato americano, ou seja, ponto no lugar de vírgula.
-
Oi, 'thedigu'! Legal você querer aprender a trabalhar com BD e principalmente a trabalhar com MySQL. Quando você instala o MySQL ele cria 3 bancos default. O Information_schema, o Mysql e o test. Não mexa nos 2 primeiros. Eles controlam os direitos de acesso, as procedures, funções, triggers, tabelas, índices, usuários e permissões de acesso ao banco. O melhor é que você crie um banco próprio para seus testes. Será necessário você baixar e instalar um gerenciador de banco de dados. O MySQL tem um muito bom e gratuíto, também. Você deverá aprender sobre modelagem de dados, normalização, relacionamentos e uso de índices para aumento de desempenho. A base da mecânca com bancos de dados está teoria de conjuntos aprendidas no 1º e 2º graus. É fácil. Não há o que desculpar. Estamos aqui para trocar informações. Pode perguntar a vontade.
-
Oi, 'Diogo de Freitas' A tradução ds linha de erro, para aqueles que não sabem inglês, é: #2014 - Commands out of sync; you can't run this command now "Comando fora de sincronia; Você não pode executar este comando agora." Este erro acontece porque você está deixando uma área de memória em aberto. Você criou a procedure, o que fez com que o MySQL reservasse espaço de memória para o código a ser executado. Dentro do código você executou um select, cujo o retorno é sempre uma tabela temporária (O resultado de uma select é sempre uma tabela). Esta tabela ficou aberta e a procedure encerrou. Isto causou uma falha de sincronia. Dentro de uma procedure procure usar os comandos FETCH e CURSOR para controlar o resultado de um select. CURSOR serve para dar um nome interno tabela que será o resultado do select e deve ser usado para abrir, fechar e ponterar o select em um registro. FETCH é usado para ponterar (ler) um registro de cada vez. Você também pode usar o select retornando diretamente para uma variável, tal como abaixo: SET minhavariavel = SELECT DATABASE( );
-
Não precisa agradecer. Compartilhar faz parte do ofício. como digo em minha assinatura: "A troca do conhecimento é a unica forma de expandirmos o mesmo". Quando pesquisar não esqueça o seguinte: Procurar por: Carlos Alberto trará todos os Calos e todos os Albertos. Para buscar somente os Carlos Alberto use entre aspas (Assim: "Carlos Alberto"). Tal como no Google.
-
Oi, Levi_gns! Procurar palavras usando o operador LIKE, tal como o 'Bicicleta' disse no post anterior, é válido se sua tabela for pequena, pois as pesquisas efetuadas por este operador frequentemente se tornam TABLE SCAN, principalmenete da forma como foi colocada acima. Table Scan é um processo de varredura completa registro a registro de toda a tabela que ignora qualquer tipo de índice, tomando tempo e processamento de forma exponencial ao crescimento da tabela. Um outro problema com este tipo de pesquisa é que ele está restrito a um único campo. A solução é usar índices fulltext (os mesmo usados pelo google para pesquisa). Veja o manual do MySQL sobre índices fulltext: 6.8. Pesquisa Full-text no MySQL
-
Oi, 'Rafael Rocha B.' A sintaxe para insert está descrita no manual do MySQL desta forma: INSERT [LOW_PRIORITY | DELAYED] [IGNORE] [INTO] nome_tabela [(nome_coluna,...)] VALUES ((expressão | DEFAULT),...),(...),... [ ON DUPLICATE KEY UPDATE nome_coluna=expressão, ... ] or INSERT [LOW_PRIORITY | DELAYED] [IGNORE] [INTO] nome_tabela [(nome_coluna,...)] SELECT ... or INSERT [LOW_PRIORITY | DELAYED] [IGNORE] [INTO] nome_tabela SET nome_coluna=(expressão | DEFAULT), ... [ ON DUPLICATE KEY UPDATE nome_coluna=expressão, ... ] A primeira opção sua, definida abaixo, está correta.$sql "INSERT INTO inscritos (nome, endereco, telefone) VALUES ('$nome', '$endereco', '$telefone')"; Esta outra $sql "INSERT INTO inscritos (nome=$nome, endereco=$endereco, telefone=$telefone)"; Não existe. Você deverá usar como na 3a. opção. e ficaria assim:INSERT INTO inscritos SET nome=$nome, endereco=$endereco, telefone=$telefone; Para mais detalhes, leia o manual do MySQL de sua versão.
-
Migrar firebird para Mysql
pergunta respondeu ao Antonio Maucyr Pasqualli F de Denis Courcy em MySQL
Oi 'Antonio Maucyr Pasqualli F' Você já viu esta ferramenta?http://www.spectralcore.com/fullconvert//t...CFQRM5QodPlGrPA Eu, particularmente, não conheço nenhuma ferramenta para fazer esta conversão com segurança e de forma automática, mas procure na net por Firebird to MySQL que você achará algumas para testar. -
Oi, 'tiago31' ! Qual é o problema?
-
Oi, 'marvi' Pelo que entendi seria uma busca do tipo google correto? Se sim, use um índice do tipo FULLTEX e coloque os dois campos no índice. Para saber mais leia o manual de sua versão e poste aqui o que você não entendeu.