Ir para conteúdo
Fórum Script Brasil

Denis Courcy

Moderadores
  • Total de itens

    3.089
  • Registro em

  • Última visita

Tudo que Denis Courcy postou

  1. muda o colation ou charset do banco. ALTER DATABASE Sintax ALTER {DATABASE | SCHEMA} [db_name] alter_specification ... ALTER {DATABASE | SCHEMA} db_name UPGRADE DATA DIRECTORY NAME alter_specification: [DEFAULT] CHARACTER SET charset_name | [DEFAULT] COLLATE collation_name Exemplo: ALTER DATABASE meu_banco_novo CHARACTER SET utf8 COLLATE utf8_general_ci;
  2. Desculpe. Esqueci de nomear o campo. SELECT * FROM processos p INNER JOIN (SELECT h.id, h.processo_id, h.tipo, h.observacoes, MAX(h.data) AS data FROM historico h GROUP BY h.processo_id) h1 ON h1.processo_id = p.id WHERE h1.`data` < minhaDate_Sub(DATE(NOW()), 15, 'D'); Tente agora.
  3. Substitua SELECT * FROM processos p INNER JOIN (SELECT * FROM historico h GROUP BY h.processo_id HAVING MAX(h.`data`)) h1 ON h1.processo_id = p.id WHERE h1.`data` < minhaDate_Sub(DATE(NOW()), 15, 'D');Por SELECT * FROM processos p INNER JOIN (SELECT h.id, h.processo_id, h.tipo, h.observacoes, MAX(h.data) FROM historico h GROUP BY h.processo_id) h1 ON h1.processo_id = p.id WHERE h1.`data` < minhaDate_Sub(DATE(NOW()), 15, 'D');Se possível troque o nome do campo `data` por outro de sua conveniência, pois data é palavra chave do MySQL e pode causar confusão.
  4. Verifique se é isso que você quer: SELECT * FROM processos p INNER JOIN (SELECT * FROM historico h GROUP BY h.processo_id HAVING MAX(h.`data`)) h1 ON h1.processo_id = p.id WHERE h1.`data` < DATE_SUB(DATE(NOW()), INTERVAL 15 DAY);Onde o select SELECT * FROM historico h GROUP BY h.processo_id HAVING MAX(h.`data`)retorna os históricos com as maiores datas h1 é o nome da tabela gerada pelo select acima(o que busca as maiores datas) DATE_SUB(DATE(NOW()), INTERVAL 15 DAY)é a função que retorna datas com menos de 15 dias (15 é variável). Se quiser pode usar minha função que retorna qualquer tipo de intervalo DELIMITER $$ USE `test`$$ -- eh o nome do banco use o seu DROP FUNCTION IF EXISTS `minhaDate_Sub`$$ CREATE DEFINER=`root`@`localhost` FUNCTION `minhaDate_Sub`(dtInicial DATE, intervalo INTEGER, tipo CHAR(1)) RETURNS DATE BEGIN DECLARE retorno DATE DEFAULT NULL; IF intervalo > 0 THEN IF tipo = 'D' THEN SET retorno = DATE_SUB(dtInicial, INTERVAL intervalo DAY); END IF; IF tipo = 'M' THEN SET retorno = DATE_SUB(dtInicial, INTERVAL intervalo MONTH); END IF; IF tipo = 'A' THEN SET retorno = DATE_SUB(dtInicial, INTERVAL intervalo YEAR); END IF; END IF; RETURN retorno; END$$ DELIMITER ;Exemplo de uso: SELECT * FROM processos p INNER JOIN (SELECT * FROM historico h GROUP BY h.processo_id HAVING MAX(h.`data`)) h1 ON h1.processo_id = p.id WHERE h1.`data` < minhaDate_Sub(DATE(NOW()), 15, 'D');
  5. Proceda assim: Faça um backup das tabelas em questão. Desvincule o constraint se existir. Converta o campo de string para numerico varchar para int Os campos devem ser do mesmo tipo e tamanho nas duas tabelas. refaça o vinculo de constraint. Verifique se tudo está ok Se estiver ok elimine as tabelas de backup. Mais simples do que você está querendo fazer. Se você errar é so voltar o backup destas tabelas
  6. Denis Courcy

    Criação de logs

    Normalmente eu utilizo uma tabela de histórico (cópia da estrutura da tabela que quero acompanhar, com um campo a mais que é a data hora de entrada no historico. CREATE TABLE IF NOT EXISTS `roupas_historico` ( `cod_paciente` int(10) NOT NULL, `cod_roupa` int(15) NOT NULL PRIMARY KEY AUTO_INCREMENT `Descroupa` varchar(500) COLLATE utf8_bin NOT NULL, `horariovista` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, `SaidaOuEntrada` varchar(10) COLLATE utf8_bin NOT NULL, dtEntradaHistorico datetime )O trigger fica assim: DELIMITER $$ CREATE TRIGGER `nomedobanco`.`trg_log` BEFORE UPDATE ON `nomedobanco`.`teste` FOR EACH ROW BEGIN INSERT INTO roupas_historico(`cod_paciente`, `cod_roupa`, `Descroupa`, `horariovista`, `SaidaOuEntrada`, dtEntradaHistorico) VALUES (OLD.`cod_paciente`, OLD.`cod_roupa`, OLD.`Descroupa`, OLD.`horariovista`, OLD.`SaidaOuEntrada`, NOW()); END$$ DELIMITER ;A gravação do log acontece antes da gravação dos dados desejados. O log recebe os dados que estavam na tabela antes de serem atualizados. Em minhas tabelas eu utilizo 4 campos a mais que não coloquei aqui que são: data hora inclusão informação data hora atualização informação identificador usuário resp inclusão identificador usuário resp alteração
  7. A sintaxe correta é CREATE DATABASE sistemahx; Você digitou CREAT DATABASE sistemahx;
  8. Leia sobre MySQL Server Time Zone Support no manual do mysql de sua versão
  9. INNER JOIN é intercessão de conjuntos. Se não houver elemento em determinado conjunto (tabela), então não há intercessão. Em seu caso, não há o que deletar. Uma abordagem através de uma procedure trará uma resposta mais segura, em se caso.
  10. Normalmente eu opto por armazenar arquivos e fotos fora do banco. É a melhor prática. Quanto a evitar acessos indevidos, isto dependerá do tipo de segurança que você quiser adotar para seu servidor de arquivos. Na questão backup, uma rotina de backup bem feita pode fazer o backup do banco e dos arquivos num mesmo momento e com toda a segurança necessária.
  11. INNER JOIN é intercessão de conjuntos. Passe os INNERS JOIN para LEFT JOIN. Pode ser que em um deles haja um único registro como retorno e, por isso, esteja retornando um único registro. Depois, volte um por um os LEFT JOIN para INNER e você verá se isso se comprova.
  12. Já pensaste em usar uma tabela separada para guardar os IDs e alimentá-los por stored procedures em vez de usar auto_increment?
  13. Oi Graciel, Você pode mostrar o código da sp para que eu possa analisar, por favor?
  14. Tenta assim: SELECT f1.M3a, L.m3 AS m3Lote, f1.m3Verde, f1.m3Seca, pesoCarga, m3Carga - L.m3 AS m3Consumo, ROUND((pesoCarga * (m3Carga-L.m3))/ m3Carga,2) AS pesoConsumido, ROUND((sum(F.m3)/(m3Carga-L.m3))*100,2) AS RENDIMENTO, DATE_FORMAT(L.`dataInicio`,'%d/%m/%Y') AS lote_dataInicio, DATE_FORMAT(L.`dataFechamento`,'%d/%m/%Y') AS lote_dataFechamento, F.idFardoLamina AS fardolamina_idFardoLamina, F.m3 AS fardolamina_m3, F.consumoTora AS fardolamina_consumoTora, F.idLote AS fardolamina_idLote, O.nomeFornecedor AS fornecedor, DATE_FORMAT(NOW(),'%d/%m/%Y') as data FROM fardolamina F INNER JOIN lote L on L.idLote = F.idLote INNER JOIN fornecedor O on O.idFornecedor = L.idFornecedor INNER JOIN (SELECT f1a.idLote, sum(f1a.m3) AS M3a, sum(IF(f1a.estado = 'v',f1a.m3,0)) AS m3Verde, sum(IF(f1a.estado = 's',f1a.m3,0)) AS m3Seca FROM fardoLamina f1a GROUP BY f1a.idLote) f1 ON f1.idLote = F.idLote LEFT JOIN (SELECT c1.idLote, sum(c1.m3) AS m3Carga, sum(c1.tonelada) AS pesoCarga FROM carga c1 GROUP BY c1.idLote) C on C.idLote = L.idLote
  15. Faça assim: select a.nome from autor a inner join escreve e on e.autor_idautor = a.idautor inner join livro l on l.idlivro = e.livro_idlivro where l.estoque = 0;
  16. Normalmente, nas tabelas mais importantes eu coloco 4 campos a mais Datahora inclusão registro Datahora alteracao registro id uuario resp inclusao id usuario resp alteracao Também crio uma tabela historico com a mesma estruturada tabela em questão e com um campo a mais Datahora inclusao no historico Cada alteracao feita na tabela original dispara um trigger que alimenta a tabela historico com os dados antes de serem alterados Quando uma alteração
  17. Esta pergunta se refere ao funcionamento da operação em PHP. Não tem nada a haver com MySQL. Movendo para o fórum de PHP.
  18. Valores numéricos separados por ponto de milhar, milhão, etc? Nenhum tipo aceita. Use funções de transformação para string no momento de exibí-los.
  19. Jogue o conteudo desta string para uma variavel e faça um breakpoint para ver se o sql gerado está do jeito que você quer.
  20. Qual a estrutura da tabela `InfResp_BounceRegs`? Qual o comando existente antes de -- Start command --? Qual o comando existe após -- End command --?
  21. Por favor post apenas códigos de sql. Este é um site de MySQL e não de PHP ou outra linguagem. Quando a sua query SELECT * FROM item_pedido i INNER JOIN produto p ON i.id_pedido = '".$id."' AND i.id_produto = p.prod_id ORDER BY p.prod_descricao1) Use a cláusula ON somente para o relacionamento entre tabelas. Passe o i.id_pedido = '".$id."' ANDPara a cláusula WHERE que é o local apropriado. 2) Verifique se existem índices para id_produto na tabela item_pedido ; prod_id na tabela produto (creio que deva ser o primary key desta tabela) prod_descricao na tabela produto (creio que deva ser unike key para esta tabela)
  22. Denis Courcy

    java netbeans

    Você postou no forum errado. Este forum é de MySQL. Movendo para java.
  23. Dentro da procedure faça um select para testar a chave antes de proceder a gravação. É fácil.
×
×
  • Criar Novo...