-
Total de itens
3.089 -
Registro em
-
Última visita
Tudo que Denis Courcy postou
-
Oi, 'TNT'! .frm é o arquivo que contém a estrutura de sua tabela. O MySQl está informando que este arquivo está danificado e que ele não consegue alterá-lo. Correção: 1 Crie outro banco, 2 Neste novo banco, crie a estrutura da tabela que está com defeito no outro banco, 3 Copie os dados da tabela antiga para a tabela nova. (Até este ponto outros usuários podem estar usando o banco) 4 Certifique-se que você está em "stand alone", ou seja, que ninguém mais está usando o banco, 5 Verifique o disco quanto a defeitos de bad block. 6 Dê um drop na tabela defeituosa 7 Copie a tabela do banco novo no banco correto, 8 Dê um drop no banco novo. 9 Libere o banco para uso.
-
(Resolvido) Resultado ultimas 12 horas no campo tipo TIME
pergunta respondeu ao Tiago A. de Lima de Denis Courcy em MySQL
OI Tiago! Se sua tabela possui poucos registros use assim: SELECT * FROM minhatabela WHERE STR_TO_DATE(CONCAT(`minhadata`, ' ', minhahora), '%Y-%m-%d %H:%i:%s') >= DATE(SUBDATE(NOW(), INTERVAL 12 HOUR)); Se a tabela for maior crie um novo campo com formato datetime, atualize a data e hora para este novo campo Exclua os campos data e hora antigos e faça a consulta assim: SELECT * FROM minhatabela WHERE `minhanovadatahora` >= DATE(SUBDATE(NOW(), INTERVAL 12 HOUR)); Esta segunda forma, se você criar um índice para o novo campo, agilizará a resposta a sua consulta. -
(Resolvido)Como Inserir dados em duas tabelas relacionadas
pergunta respondeu ao alexclima de Denis Courcy em MySQL
Oi, Alex! Se você tiver dificuldade crie uma storage procedure, passe os valores em values como parametros e execute a operação SQL normalmente. -
Este é um caso de responder Sim e Não. Sim se o atributo escolhido para estar na cláusula where puder ser usado por algum índice desta tabela. Ou se a tabela possuir uma quantidade pequena de registros. Não se o atributo usado na cláusula where não puder ser usado por indices desta tabela, ou se a tabela possuir uma grande quantidade de registros. Quando se usa atributos na cláusula where o motor do MySQL tenta usar um índice para agilizar resposta a consulta. Quando a tabela possui muitos registros e o motor do MySQL não consegue usar um índice para agilizar a resposta a consulta então a consulta gera um TABLE SCAN, que é uma varredura completa registro a registro na tabela, do´primeiro ao último registro, o que pode demorar muito para dar resposta. Pense bem nos atributos e condições que você vai colocar na passagem de parâmetros para esta procedure.
-
Oi, 'rafaeldorazio' PREPARE M_stmt FROM @meuSQL; -- cria uma área na memória e transforma a string em @meuSQL em comando EXECUTE M_stmt; -- Executa o comando gerado na área criada DEALLOCATE PREPARE stmt; -- Limpa e Libera a memória da área alocada Um pouco sim. Mas nada perceptível com as máquinas atuais.
-
Oi, 'Carlos Rocha' Na query SELECT GROUP_CONCAT(pr.nome, CONCAT(' <?=formata_moeda(pp.preço);?><BR>')) Produtos, sum(pp.preço) Preco_Total, fo.nome Fornecedor FROM produtopreco pp inner join fornecedores fo ON pp.idFornecedor = fo.id inner join produtos pr ON pp.idProduto = pr.id where pp.idfornecedor = fo.id GROUP BY fo.nome Se pp.preço é atributo da tabela pp, então o concat CONCAT(' <?=formata_moeda(pp.preço);?><BR>') está escrito errado. O correto é CONCAT(' <?=formata_moeda(',pp.preço,');?><BR>'). Ou seja falta virgulas entre pp.preço para que o concat possa trazer o conteúdo do atributo. Quanto a segunda parte, ainda não sei como resolver.
-
Oi, 'rafaeldorazio' O que você está pedindo é um gerador de query dinâmica. Faça assim: DELIMITER $$; DROP PROCEDURE IF EXISTS `sp_select_delete_funcionario` $$ CREATE DEFINER=`root`@`localhost` PROCEDURE `sp_select_delete_funcionario`(IN sp_query VARCHAR(100)) BEGIN SET @meuSQL = CONCAT('SELECT * FROM Funcionario WHERE ', sp_query); PREPARE M_stmt FROM @meuSQL; EXECUTE M_stmt; DEALLOCATE PREPARE stmt; END $$ DELIMITER; Para executar esta SP use:call sp_select_delete_funcionario('fun_nome="Rafael Fernandes" ');
-
(Resolvido)Como Inserir dados em duas tabelas relacionadas
pergunta respondeu ao alexclima de Denis Courcy em MySQL
Oi, 'alexclima' Este é um exemplo em SQL de como funciona este tipo de insert. SET AUTOCOMMIT=0; START TRANSACTION; INSERT INTO pessoa(nome_pessoa, senha_pessoa, cpf_pessoa, rg_pessoa) VALUES('teste1', 'senha', '123', '456'); INSERT INTO Certificados(nome_certificado, lugar_certificado, idPessoa) values('cert1', 'rj', (select LAST_INSERT_ID())); COMMIT; SET AUTOCOMMIT=1; -
(Resolvido)Como Inserir dados em duas tabelas relacionadas
pergunta respondeu ao alexclima de Denis Courcy em MySQL
Oi, 'alexclima' São dois inserts distintos. Primeiro insira os dados na tabela pai (Pessoa), depois insira os dados na tabela filha (Certificados). -
Oi, 'wilhaods' Na tabela aluno (veja abaixo) Você não definiu o atributo matricula como primary key. Por isso a tabela inscreve não consegue ser gerada. ela precisa da chave para criar a foreign key que refrencia alunos a matricula.
-
Oi, 'thiagojpa' Na sua consulta Ficou faltando a cláusula FROM e o atributo dscr que você quer listado. Tente assim:SELECT distinct fbai_erro, fmun, fnum, locf_erro, dscr FROM Bairros;
-
Oi, 'Stoma' ! Existe uma formaa, sim. Mas você perderá o benefício odo uso de índices que acelerariam a resposta de sua consulta. A forma que vou expor abaixo SEMPRE gerará um TABLE SCAN, ou seja, uma varredura completa na tabela. SELECT * FROM usuarios WHERE "teste" IN (coluna1, coluna2) = A segunda forma que você postou é a forma correta de proceder.
-
(Resolvido) Modificar registro de chave estrangeira e de chave primári
pergunta respondeu ao PhoenixWings de Denis Courcy em MySQL
Oi, 'PhoenixWings' Use SET SET FOREIGN_KEY_CHECKS=0 antes de proceder o update. Este comando parará a checagem de constraint e permitirá que você ajuste seu banco. Ao final do serviço você deve voltar o comando ao seu estado normal com SET FOREIGN_KEY_CHECKS=1Preste muita atenção em suas modificações enquanto o banco estiver com a checagem desligada ou ele não vai conseguir voltar por falha na integridade referencial. -
Oi, 'cay0' Use DECLARE <minhavariavel> <tipodavariavel> [DEFAULT <x>] Onde: DECLARE é a cláusula de declaração da variável <minhavariavel> é o nome da variável que quero usar <tipodavariavel> é o tipo da variável (INTEGER, VARCHAR, etc) DEFAULT é a cláusula opcional para inicialização automática da variável no momento de sua criação e <x> é o valor de inicialização da variável.
-
Criar PK tem tabela já existente
pergunta respondeu ao Marcelo V. V. Magalhães de Denis Courcy em MySQL
Oi, Marcelo! como definição posso dizer que função (única) de uma PK é ligar uma tabela a outra. Criar pk com chaves complexas como a sua é perigoso por causa deste tipo de problema que você está enfrentando. Para criar uma PK auto_increment sem estragar seus dados faça assim: 1º passo desctruir a pk existente e criar um índice único com a cahe da pk atual para que seus programas não se percam. ALTER TABLE tabela DROP PRIMARY KEY, ADD UNIQUE KEY nome_do_indice (campo); 2º passo criar um novo atributo auto incrementavel e uma nova PK para este atributo ALTER TABLE tabela ADD COLUMN nome_da_coluna INTEGER UNSIGNED NOT NULL AUTO_INCREMENT, ADD PRIMARY KEY (nome_da_coluna); -
Resultado com Foreach no Select e Group by
pergunta respondeu ao calebeaires de Denis Courcy em MySQL
Oi, 'calebeaires'! Esta forma de representção é conhecida como CROSS-REFERENCE. Você obtém este resultado da seguinte forma: SELECT PRODUTO, sum(IF(Vendedor='A', VALOR, 0)) AS Vendedor_A, sum(IF(Vendedor='B', VALOR, 0)) AS Vendedor_B FROM tabela Group by produto; -
(Resolvido) Selecionar tabela filtrando dados duplicados por data
pergunta respondeu ao João Carlos C. de Denis Courcy em MySQL
Oi, 'João Carlos C.' Faça assim: SELECT DISTINCT * FROM EMPRESA_IDENTIDADE ei JOIN EMPRESA e ON ei.EMP_COD = e.EMP_COD WHERE e.EMP_CATEGORIA = 'F' AND e.EMP_PERMISSAO = 'C' AND ei.EMP_I_DATAMOD = (SELECT max(ei2.EMP_I_DATAMOD) FROM EMPRESA_IDENTIDADE ei2 WHERE ei2.EMP_COD = e.EMP_COD) Este código tem uma falha. Se houver datas e horas iguais para um mesmo ei2.EMP_COD ele trará duplicado, pois não saberá qual o maior. -
Select em tabela com dados separados por vírgula dentro do campo.
pergunta respondeu ao jguidi de Denis Courcy em MySQL
Oi, 'jguidi' Para poder responder sua pergunta fiz o seguinte exemplo: CREATE TABLE `teste` ( `id` tinyint(1) default NULL, `Valor` varchar(50) default NULL ) ENGINE=MyISAM INSERT INTO `teste`(id, valor) values (1, "1,31,12,435"),(2,"1,22,43,67"),(3,"43,12"); Sua pesquisa fica assim:select id from teste where FIND_IN_SET('1', valor); Retorna id=1 e id=2 select id from teste where FIND_IN_SET('12', valor);Retorna id=1 e id=3 -
(Resolvido) MySQL - problema ao adicionar chave estrangeira à tabela [
pergunta respondeu ao PhoenixWings de Denis Courcy em MySQL
Para remoção de chave estrangeira a sintaxe é:DROP FOREIGN KEY fk_symbol Nomes de chaves são importantes para uma hora destas. Quando eu criei a chave estrangeira eu dei um nome a ela. Lembra? CONSTRAINT `FK_MY_CONTACTS001` FOREIGN KEY (`idjob`) REFERENCES `jobs` (`idjob`) ON DELETE CASCADE ON UPDATE CASCADE; `FK_MY_CONTACTS001` é o nome que dei a esta chave. para eliminá-la use: ALTER TABLE my_contacts DROP FOREIGN KEY `FK_MY_CONTACTS001`; Nota: A chave deve ser eliminada antes de eliminar o atributo. -
(Resolvido) MySQL - problema ao adicionar chave estrangeira à tabela [
pergunta respondeu ao PhoenixWings de Denis Courcy em MySQL
Oi, 'PhoenixWings' Você inseriu o código naquela tabela que enviei? Se sim então ela já tinha a constraint e é por isso que está dando erro. removi a constrint e o atributo e depois apliquei a atualização de tabela que passei no post anterior e funcionou sem erros. Faz toda a diferença. Constraints só funcionam em tabelas do tipo Innodb. -
Oi, 'jubeneve' pelo que você relatou o problema está em seu direito de acesso na máquina servidora. Seu usuário necessita ter direitos de SUPER para poder criar trigger. Fonte: seção 18.1. CREATE TRIGGER Syntax (manual Mysql Versão 5.0 em pdf)
-
Oi, 'JonasFloripa' Qual atributo na tabela totalhoras realiza a ligação com a tabela candidatos?
-
(Resolvido) MySQL - problema ao adicionar chave estrangeira à tabela [
pergunta respondeu ao PhoenixWings de Denis Courcy em MySQL
Então faça assim: ALTER TABLE my_contacts ( ADD COLUMN idjob INT(11) NOT NULL DEFAULT 0, ADD CONSTRAINT `FK_MY_CONTACTS001` FOREIGN KEY (`idjob`) REFERENCES `jobs` (`idjob`) ON DELETE CASCADE ON UPDATE CASCADE; -
(Resolvido) MySQL - problema ao adicionar chave estrangeira à tabela [
pergunta respondeu ao PhoenixWings de Denis Courcy em MySQL
Oi, 'PhoenixWings' Agora já sei o que você quer. Faça assim: CREATE TABLE jobs ( idjob INT(11) NOT NULL AUTO_INCREMENT, profession VARCHAR(20), PRIMARY KEY (idjob) ); CREATE TABLE my_contacts ( id_contact INT NOT NULL AUTO_INCREMENT, last_name varchar(30) , first_name varchar(20) , email varchar(50) , gender char(1), birthday date , idjob INT(11) NOT NULL DEFAULT 0, location varchar(50), status varchar(20), interests varchar(100), seeking varchar(100), city VARCHAR(20), state CHAR(2), PRIMARY KEY(id_contact), CONSTRAINT `FK_MY_CONTACTS001` FOREIGN KEY (`idjob`) REFERENCES `jobs` (`idjob`) ON DELETE CASCADE ON UPDATE CASCADE ); Veja idjob em my_contacts ele tem a mesma estrutura que idjob em jobs. Quando falei em sinalização falei no sentido de que um número inteiro pode ser representado no conjunto dos numeros naturais com a aplicação da cláusula UNSIGNED. Sem esta cláusula ele pertencerá ao conjunto dos inteiros. Matéria do 6º ano 1º grau - Conjuntos Numéricos.