-
Total de itens
3.089 -
Registro em
-
Última visita
Tudo que Denis Courcy postou
-
Oi, 'agitonoticias'! Este é um caso clássico de controle de vigencia de uma operação. A vigencia determina a partir de quando um determinado registro estará valendo e/ou a partir de quando um determinado registro parrou de valer. Todas as vezes que trabalhamos com datas de vigência devemos criar, no mínimo um atributo de fim de vigência (normalmente eu crio o atributo de inicio de vigencia, também). Minha recomendação, sem ver o que você está fazendo, é criar os atributos de inicio e fim de vigencia do classificado.
-
Este tópico será movido para o forum de PHP, pois seu problema está na conexão com aquela linguagem e não com o banco MySQl propriamente dito.
-
(Resolvido) Select vindo do checkbox, como fazer?
pergunta respondeu ao Tchello de Denis Courcy em MySQL
Use a função CONCAT ou a função CONCAT_WS e passe cada variável com suas respectivas aspas. use a função QUOTE(str) Depois de formatada suas variáveis deverão ser transformadas em uma string parecida com esta: '"a","b","c","d"' -
Atraves do uso de lock nas tabelas ou, de forma mais correta, através do desenvolvimento de logica mais apurada em sua programação.
-
Oi, 'dougfoo' Informe os nomes e as estruturas das tabelas (apenas os campos necessários) pois você fala de uma tabela vendas e informa uma tabela chamada HISTORICO_OPERACOES. Sem isso não há como ajudar.
-
Não seria mais indicado você ter uma única tabela assim (id estado cidade logradouro bairro cep tp_logradouro)? Mas, respondendo sua pergunta, para fazer de forma otimizada você deverá criar uma storage procedure e usar o comando prepare para criar os selects em tempo de execução.
-
Oi, 'cmdmss' Respondendo suas perguntas. Ver o arquivo my.ini (se você está usando o windows) ou my.cnf (se você está usando linux)Procure pela instrução datadir=<diretório onde estão seus bancos, tabelas e indices O mais correto é usar o mysqldump ou uma ferramenta comercial indicada pela MySQL. Qualquer outra forma é muito arriscado e você pode perder seus dados Sim. Mas, você pode perder seus dados.
-
(Resolvido) Select vindo do checkbox, como fazer?
pergunta respondeu ao Tchello de Denis Courcy em MySQL
Oi, 'Tchello' Tente: SELECT * FROM tabela WHERE itens IN ('itens selecionados no checkbox'); -
Oi, 'afukushima79' Pelo que entendi você quer uma consulta assim: select L.ID, P.CODIGO, P.STATUS from PRODUTOS P inner join from CPI ON CPI.CODIGO=P.CODIGO inner join LOCAL L ON L.ID=CPI.ID Para contar os status por lodigo e local, você pode usar a seguinte variação:select L.ID, P.CODIGO, P.STATUS, count(P.STATUS) from PRODUTOS P inner join from CPI ON CPI.CODIGO=P.CODIGO inner join LOCAL L ON L.ID=CPI.ID group by L.ID, P.CODIGO, P.STATUS Recomendo que você leia livros sobre sql e o manual do mysql.
-
Revogar a permissao de apenas um banco de dados
pergunta respondeu ao Xgrilo de Denis Courcy em MySQL
Oi, 'Xgrilo' Conceda permissão banco a banco. Você pode fazer isso por script, para facilitar. -
Visualizar apenas campo desejado da tabela
pergunta respondeu ao Marcos Vilela de Denis Courcy em PHP
Esta dúvida não está ligada a um problema de entendimento dom MySQL e sim com entendimento em PHP. Movendo para o tópico de PHP. -
SELECT bairro, endereco FROM bairros WHERE bairro IN ("ahú", "bacacheri")
-
Oi, 'laurinha2004' ! Experimente fazer como está no anexo abaixo. dvd.pdf
-
Oi, 'ursolouco' ! Tanto o servidor MySQL (console e programas) quanto alguns programas independentes conseguem resolver o retorno de uma SP, sem problemas, mas na web isto não acontece. Se você necessita da resposta da query é melhor rodá-la sem a SP. Coloque em seu código, somente o texto SELECT id, nome, inicio, termino FROM desenvol_ipen.trimestre;
-
Oi, 'chuquer' Desculpe a demora na resposta. Só hoje pude pensar neste emaranhado que você postou. Segue abaixo a solução do problema. SELECT DISTINCT i.identidade, i.nome, COUNT(ep.id) AS QTAPROVADOS FROM TREINAMENTO t INNER JOIN INSTRUTOR i ON i.identidade = t.instrutor_identidade INNER JOIN ALUNOEXAMEPRATICO ap ON ap.Aluno_identidade = t.aluno_identidade INNER JOIN EXAMEPRATICO ep ON ep.id = ap.examePratico_id WHERE ep.resultado = "APROVADO" GROUP BY i.identidade ORDER BY QTAPROVADOS;
-
Atualização de Tabelas com Estrutura Igual
pergunta respondeu ao Tiago Kanupp de Denis Courcy em MySQL
Esta lógica é velha conhecida da época de gravação sequencial. Ela chama "Balance Line". Procure por este tipo de lógica e escreva uma Storage procedure para executá-la. -
Oi, 'doleys' É só acrescentar a mesma tabela novamente. Particularmente, quando um select precisa ser escrito usando diversas tabelas, eu prefiro o uso explícito dos termos "JOIN". Eles tornam a leitura do código mais fácil. e separam o que é da cláusula WHERE do que é da cláusula JOIN. Fazendo assim e respondendo seu questionamento, temos: SELECT p.nome, c1.id AS origem, c2.id AS FROM presos p INNER JOIN trocas_cela tc ON tc.cod_preso = p.id INNER JOIN celas c1 ON c1.id = tc.cela_origem INNER JOIN celas c2 ON c2.id = tc.cela_destino;
-
Sim. E, talvez, acrescentando um auto relaconamento na primeira tabela para informar que o primeiro cliente indicou o segundo e etc.
-
Resultados Filhos na mesma linha do Resultado Pai
pergunta respondeu ao edi_ de Denis Courcy em MySQL
Oi, 'edi_' Impossível não é. Mas é melhor resolvido através de linguagem de programação. -
Oi, 'JonasFloripa' Sua consulta está errada. A primeira consulta nunca falará com a segunda. pois o campo mes não existe. Se você quer o "mes atual" implica que você quer o mes do ano corrente. então sua consulta deveria ser cirada assim: (Em sql somente. Não conheço PHP e nem quero conhecer) SELECT * FROM candidatos WHERE idescala= '".$idnome."' AND data BETWEEN '".$data1."' AND '".$data2."';Serão duas variáveis de data como parâmetro. A primeira com o início do mes ('".$data1."'= '2010-06-01')e a segunda com o final ('".$data2."' '2010-06-30'). Esta é a forma que dá o retorno mais rápido na consulta. Se esta consulta for executada com frequencia e se a quantidade de registro na tabela candidatos for grande, aconselho que você crie um indice por idescalada, data. Vai acelerar muito o tempo de resposta.
-
Oi, Além do comando para desalocar a área de memória alocara pelo comando PREPARE, não encontrei nada de errado. Inclusive já testei e está funcionando corretamente. Segue o código com a instrução que estava faltando: DELIMITER $$; DROP PROCEDURE IF EXISTS `pivotwizard`$$ CREATE DEFINER=`root`@`Localhost` PROCEDURE `pivotwizard`( IN P_Row_Field VARCHAR(255), IN P_Column_Field VARCHAR(255), IN P_Value VARCHAR(255), IN P_From VARCHAR(4000), IN P_Where VARCHAR(4000)) BEGIN DECLARE done INT DEFAULT 0; DECLARE M_Count_Columns int DEFAULT 0; DECLARE M_Column_Field varchar(60); DECLARE M_Columns VARCHAR(8000) DEFAULT ''; DECLARE M_sqltext VARCHAR(8000); DECLARE M_stmt VARCHAR(8000); DECLARE cur1 CURSOR FOR SELECT CAST(Column_Field AS CHAR) FROM Temp; DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1; DROP TABLE IF EXISTS Temp; SET @M_sqltext = CONCAT('CREATE TEMPORARY TABLE Temp ', ' SELECT DISTINCT ',P_Column_Field, ' AS Column_Field', ' FROM ',P_From, ' WHERE ',P_Where, ' ORDER BY ', P_Column_Field); PREPARE M_stmt FROM @M_sqltext; EXECUTE M_stmt; SELECT COUNT(*) INTO M_Count_Columns FROM Temp WHERE Column_Field IS NOT NULL; IF (M_Count_Columns > 0) THEN OPEN cur1; REPEAT FETCH cur1 INTO M_Column_Field; IF (NOT done) and (M_Column_Field IS NOT NULL) THEN SET M_Columns = CONCAT(M_Columns, ' SUM( CASE WHEN ',P_Column_Field,'=''',M_Column_Field,'''', ' THEN ',P_Value, ' ELSE 0 END) AS `', M_Column_Field ,'`,'); END IF; UNTIL done END REPEAT; SET M_Columns = Left(M_Columns,Length(M_Columns)-1); SET @M_sqltext = CONCAT('SELECT ',P_Row_Field,',',M_Columns, ' FROM ', P_From, ' WHERE ', P_Where, ' GROUP BY ', P_Row_Field, ' ORDER BY ', P_Row_Field); PREPARE M_stmt FROM @M_sqltext; EXECUTE M_stmt; END IF; DEALLOCATE PREPARE stmt; END$$ DELIMITER;$$
-
Oi, 'Supernoi' Só corrigi a sintaxe. Não testei o funcionamento. Faça assim: DELIMITER $$; DROP PROCEDURE IF EXISTS pivotwizard$$ CREATE DEFINER = 'root'@'Localhost' PROCEDURE pivotwizard( IN P_Row_Field VARCHAR(255), IN P_Column_Field VARCHAR(255), IN P_Value VARCHAR(255), IN P_From VARCHAR(4000), IN P_Where VARCHAR(4000)) BEGIN DECLARE done INT DEFAULT 0; DECLARE M_Count_Columns int DEFAULT 0; DECLARE M_Column_Field varchar(60); DECLARE M_Columns VARCHAR(8000) DEFAULT ''; DECLARE M_sqltext VARCHAR(8000); DECLARE M_stmt VARCHAR(8000); DECLARE cur1 CURSOR FOR SELECT CAST(Column_Field AS CHAR) FROM Temp; DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1; DROP TABLE IF EXISTS Temp; SET @M_sqltext = CONCAT('CREATE TEMPORARY TABLE Temp ', ' SELECT DISTINCT ',P_Column_Field, ' AS Column_Field', ' FROM ',P_From, ' WHERE ',P_Where, ' ORDER BY ', P_Column_Field); PREPARE M_stmt FROM @M_sqltext; EXECUTE M_stmt; SELECT COUNT(*) INTO M_Count_Columns FROM Temp WHERE Column_Field IS NOT NULL; IF (M_Count_Columns > 0) THEN OPEN cur1; REPEAT FETCH cur1 INTO M_Column_Field; IF (NOT done) and (M_Column_Field IS NOT NULL) THEN SET M_Columns = CONCAT(M_Columns, ' SUM( CASE WHEN ',P_Column_Field,'=''',M_Column_Field,'''', ' THEN ',P_Value, ' ELSE 0 END) AS `', M_Column_Field ,'`,'); END IF; UNTIL done END REPEAT; SET M_Columns = Left(M_Columns,Length(M_Columns)-1); SET @M_sqltext = CONCAT('SELECT ',P_Row_Field,',',M_Columns, ' FROM ', P_From, ' WHERE ', P_Where, ' GROUP BY ', P_Row_Field, ' ORDER BY ', P_Row_Field); PREPARE M_stmt FROM @M_sqltext; EXECUTE M_stmt; END IF; END$$ DELIMITER;$$
-
Oi 'fhilippe' Corrija a linha AccountType int(1) not null default '', para que fique assim: AccountType int(1) not null default '0',
-
Sem duvida nenhuma o segundo meio. Imagine se depois que você tiver estruturado seu banco chegue mais um ip. você terá que fazer um alter table e depois cadastrar o ip. da segunda forma você só precisa cadastrar o novo ip. Outra visão imagine que a maioria de seus dados possui 50 ips em vez de 100 que só algun possuem. Você estará desperdiçando espaço em todos os outros registros só porque alguns usam 100 ips?. Isto chama normalização e está classificado no nivel 2 de 5.
-
Em MySQL use o aplicativo de linha de comando chamado mysqldump. É o mais seguro. Veja outros tópicos nete forum sobre como usar este aplicativo.