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. Será que não tem como você melhorar a estrutura de suas tabelas para impactar menos nas relações entre elas? Em todo meu tempo com banco de dados (25 anos), ainda não vi necessidade de criar constraint com tantos atributos.
  2. O que você fez (MySQL somente. PHP é outro fórum)? Para que possamos ajudar
  3. Só com sub query. Veja se este link ajuda. http://stackoverflow.com/questions/10191815/limit-results-on-an-group-concat-or-inner-join
  4. Mostre o que fez e ajudaremos com suas dúvidas.
  5. Use GROUP_CONCAT(campo). Ele vai agrupar os usuarios separados por virgula
  6. O Mysql tem um dicionario de dados em forma de banco de dados chamado information_schema. dentro dele tem uma tabela chamada columns. É só varrê-la pra saber se a coluna que você está procurando, existe nas tabela e no bd desejado. Você vai precisar destes campos: `TABLE_SCHEMA` nome do banco, `TABLE_NAME` nome da tabela e `COLUMN_NAME` nome da coluna. O resto é facil.
  7. Isto é trabalho escolar? Se sim, mostre o que você já fez e tiraremos suas dúvidas. Não faremos o trabalho pra você.
  8. Leia este tópico: https://www.scriptbrasil.com.br/forum/topic/178941-resolvido-ajuda-com-trigger-e-schedule/?p=677871
  9. Você pode criar um sistema de databridge. Basicamente ele é constituido de uma área de ftp, que em um primeiro momento pode até ser o google drive; e um programa schedule, que fará a colocação dos dados na área de ftp, o recurso de event do mysql supre esta necessidade. Arotina é a seguinte: o server local coloca, de tempos em tempos,um arquivo txt na área de ftp. O server internet, através do event schedule do mysql(no lado internet), verifica se há arquivo, pega e processa.
  10. Entre em contato com o proprietario do sistema e solicite a mudança de banco de dados.
  11. Defina o usuario do banco como nomeUsuario@% e ele será visto em todas as máquinas. Certifique-se que não há bloqueio de firewall para a porta 3306.
  12. Faça estas alterações na trigger e na tabela saida DELIMITER $$; DROP TRIGGER `jordano`.`insereSaidaFard`$$ create trigger `insereSaidaFard` BEFORE INSERT on `fardo` for each row BEGIN -- alterar estrutura de saida para que idSaida seja auto_increment; DECLARE ultimoIdSaida INT(11); DECLARE qtd INT(11); DECLARE ppidCliente INT(11); SELECT quantidade INTO qtd FROM lote WHERE idLote = NEW.idLote; SELECT idCliente INTO ppidCliente FROM op WHERE idOp = NEW.idOp; IF (qtd >= NEW.consumoTora) THEN UPDATE lote SET quantidade = quantidade - NEW.consumoTora WHERE idLote = NEW.idLote; IF LENGTH(NEW.status) <> 0 THEN INSERT INTO saida (dataHora, idCliente) VALUES(NOW(), ppidCliente); SELECT LAST_INSERT_ID() INTO ultimoIdSaida FROM saida; SET NEW.idSaida = ultimoIdSaida; END IF; END IF; END; $$ DELIMITER ;$$
  13. Estude sobre storage procedure. Sem este tipo de rotina você não conseguirá fazer o que quer.
  14. Analisei a esturura de dados que você me passou em mp. Inseri dados e atualizei conforme abaixo e não obtive erro. insert into fardo(idFardo,`status`) values(1,"S"); update fardo set status = "N" where idfardo = 1;A mensagem apresentada por você mostra um erro de constraint "ERROR 1452: 1452: Cannot add or update a child row: a foreign key constraint fails (`timber`.`fardo`, CONSTRAINT `fardo_ibfk_3` FOREIGN KEY (`idSaida`) REFERENCES `saida` (`idSaida`))"Você está tentando inserir em fardo algum valor em fardo.idsaída que não corresponde a um valor já existente em saida.idsaida?Se sim, então este é seu erro. Não pode haver em fardo valores diferentes de nulo que não correspondam a um id válido nas tabelas com constraints. No seu caso, fardo possui constraints com as tabelas lote, localestoque, maq, saida e op;
  15. Analise o teste abaixo e informe progresso: -- selecionei meu banco de teste use test; -- criei uma tabela com os dados que vc passou create table cor( nome_cor varchar(50), Id_produto int ); -- inseri os valores que vc passou insert into cor(nome_cor,Id_produto) values("rosa",10),("verde",null),("azul",null),("amarelo verde",null), ("rosa",null),("verde",125),("azul",null),("amarelo verde",null), ("laranja",null),("cinza dourado",136),("amarelo verde",null), ("rosa",45),("verde",null),("azul",null),("amarelo verde",null), ("laranja",null),("cinza dourado",null) ; -- criei um select para saber quais produtos estavam cadastrados para que cores select * from cor where not id_produto is null ; -- Criei sql de atualização com base no sql acima update cor c1 inner join (select * from cor where not id_produto is null) c2 on c2.nome_cor = c1.nome_cor set c1.id_produto = c2.id_produto where c1.id_produto is null ;
  16. Use a função GROUP_CONCAT em secao. SELECT f.id,f.nome,f.matricula,f.fone_res,f.fone_cel,s.situacao,GROUP_CONCAT(se.secao) FROM funcionario f INNER JOIN situacao s ON s.id = f.situacao_id INNER JOIN secao_funcionario sf ON sf.funcionario_id = f.id INNER JOIN secao se ON se.id = sf.secao_id GROUP BY f.id,s.situacao
  17. Não consegui ver a imagem, nem entendi o que você quer. Pode explicar melhor?
  18. MOstre a estrutura as tabelas para que eu possa analisar em meu banco de teste
  19. Faça assim: CREATE TRIGGER `test`.`atualizaSaida` BEFORE UPDATE on `test`.`fardo` FOR EACH ROW BEGIN DECLARE ppidSaida INT UNSIGNED; IF (NEW.status <> '') THEN INSERT INTO saida (dataHora) VALUES(current_timestamp); SELECT LAST_INSERT_ID() INTO ppidSaida FROM saida; SET NEW.idSaida = ppidSaida; END IF; END$$O exemplo acima está usando meu banco de teste. Por favor troque para seu banco de dados.
  20. Que linguagem você usa? Eu uso Delphi e passei a usar um componente para storage procedure no lugar de componente para sql na hora de gravar
  21. A melhor maneira para realizar esta inserção é através de uma storage procedure. segue um exemplo: DELIMITER $$; DROP PROCEDURE IF EXISTS `seubancodedados`.`insert_estoque`$$ CREATE PROCEDURE `insert_estoque`(lista de parametros ) BEGIN DECLARE msg VARCHAR(1000) DEFAULT "sem mensagem"; DECLARE excecao SMALLINT DEFAULT 0; DECLARE CONTINUE HANDLER FOR SQLEXCEPTION SET excecao = 1; IF (teste se parametros vieram corretos) THEN SET excecao = 1; SET msg = "Erro na passagem de parametros"; -- mensagem de erro ELSE IF (Testes que você quer realizar) THEN SET msg = "Erro ......."; SET excecao = 1; ELSE START TRANSACTION; /*Inclusao*/ INSERT INTO minhatabela(lista de campos) VALUES (parametros e/ou constantes e/ou variaveis); IF excecao = 1 THEN SET msg = "PLSQL: Erro ao inserir na tabela"; ROLLBACK; END IF; END IF; END IF; /*Se tudo deu certo, entao finaliza confirmando a gravacao.*/ IF excecao <> 1 THEN COMMIT; SET msg = "PLSQL: Registro Incluido com sucesso"; END IF; SELECT msg AS msg; END$$ DELIMITER ;$$
  22. Tente assim: select * from virus v inner join gravidadevirus g on g.idvirus = v.idvirus Lembre-se que a chave primária de virus (no caso, idvirus) deve existir na tabela gravidadevirus.Pelo que entendi o relacionamento é um virus ara muitos gravidadevirus.
  23. Eu uso sqlyog.Mas também existe o EMS SQL Manager for MySQL Freeware, o MySQL workbench, e vários outros.
  24. Na tela do DOS(cmd.exe) execute c: cd \lojaEm c:\loja execute o mysqle dentro do mysql execute source spseleccli.sql
×
×
  • Criar Novo...