-
Total de itens
3.089 -
Registro em
-
Última visita
Tudo que Denis Courcy postou
-
Faça assim: SELECT tbCidades.nome AS Cidade, tbFiliais.nome AS Filial, tbProdutos.nome AS NomeProduto, SUM(IF(tbVendas.formapgto "C", 1,0)) AS VendasCartao, SUM(IF(tbVendas.formapgto "D", 1,0)) AS VendasDinheiro, SUM(IF(tbVendas.formapgto IN ('C',"D"), 1,0)) AS VendasTotal FROM cidades tbCidades INNER JOIN filiais tbFiliais ON tbFiliais.idCidade = tbCidades.idCidade INNER JOIN produtos tbProdutos ON tbProdutos.idFilial = tbFilial.idFilial INNER JOIN vendas tbVendas ON tbProdutos.idProduto = tbVendas.idProduto WHERE tbCidades.nome='Rio de Janeiro' AND tbFiliais.nome='Copacabana' AND tbVendas.data='15/11/2017' GROUP BY Cidade, Filial, NomeProduto
-
Experimente passar o campo para BIGINT NOT NULL AUTO_INCREMENT. Se suas tabelas não passarem de 63 bits (9223372036854775807) você pode usar UNSIGNED. Senão, utilize sem esta opção.
-
Tente assim: SELECT * FROM tabela WHERE campo LIKE 'auto%eletrica%'
-
O mais correto é a letra B.
-
Pegar o código e a descrição de um erro dentro de uma stored Procedure
pergunta respondeu ao neibala de Denis Courcy em MySQL
Abaixo segue um exemplo de uma storage procedure que uso em meus sistemas: DELIMITER $$ USE `meubancodedados`$$ DROP PROCEDURE IF EXISTS `minhaprocedure_crud`$$ CREATE DEFINER=`root`@`localhost` PROCEDURE `minhaprocedure_crud`(IN Acao CHAR(1), IN pidCampo INTEGER, IN pnmCampo VARCHAR(50), IN pidUsuarioRespInclusao INTEGER, IN pidUsuarioRespAlteracao INTEGER) BEGIN DECLARE msg VARCHAR(1000) DEFAULT "MySQL: Sem mensagem"; DECLARE excecao SMALLINT DEFAULT 0; DECLARE CONTINUE HANDLER FOR SQLEXCEPTION SET excecao = 1; IF pnmCampo = "" OR (Acao <> "I" AND pidCampo = 0) THEN SET msg = "MySQL: Erro na passagem de parametros"; ELSE START TRANSACTION; /*Inclusao*/ IF Acao = "I" THEN INSERT INTO minhaTabela(nmCampo, idUsuarioRespInclusao, dhInclusaoInformacao) VALUES (pnmCampo, pidUsuarioRespInclusao, NOW()); IF excecao = 1 THEN SET msg = "MySQL: Erro ao inserir na tabela de minhaTabela"; ROLLBACK; END IF; END IF; IF excecao <> 1 THEN IF Acao <> "I" THEN SET @idCampo = pidCampo; END IF; /*Alteracao*/ IF Acao = "A" THEN UPDATE minhaTabela SET nmCampo = pnmCampo, idUsuarioRespAlteracao = pidUsuarioRespAlteracao WHERE idCampo = @idCampo; IF excecao = 1 THEN SET msg = "MySQL: Erro ao atualizar minhaTabela"; ROLLBACK; END IF; END IF; END IF; /*Exclusao*/ IF excecao <> 1 THEN IF Acao = "E" THEN DELETE FROM minhaTabela WHERE idCampo = @idCampo; IF excecao = 1 THEN SET msg = "MySQL: Erro ao excluir minhaTabela"; ROLLBACK; END IF; END IF; END IF; /*Se tudo deu certo, então finaliza confirmando a gravacao.*/ IF excecao <> 1 THEN COMMIT; IF Acao = "I" THEN SET msg = "MySQL: minhaTabela Incluido com sucesso"; ELSE IF Acao = "A" THEN SET msg = "MySQL: minhaTabela Alterado com sucesso"; ELSE SET msg = "MySQL: minhaTabela Excluido com sucesso"; END IF; END IF; END IF; END IF; SELECT msg AS msg; END$$ DELIMITER ; -
Utilize chave primária somente para ligar uma tabela a outra. Campo integer unsigned not null auto_increment, resolve o problema de chave primária com auto sequenciamento.
-
Procure no manual do mysql a função DATE_ADD DATE_ADD(CURDATE(), INTERVAL 30 DAY) ou DATE_ADD(CURDATE(), INTERVAL 1 MONTH)
-
O manual do MySQL na versão 4 está em português e servirá para seu propósito. https://downloads.mysql.com/docs/refman-4.1-pt.pdf Qual quer dúvida poste aqui e te ajudarei
-
Fazendo desta forma (usando função na representação de um campo e comparando-o com um literal) você corre um grande risco de que sua busca vire um TABLE SCAN, ou seja ela não usará índices e poderá demorar muito. Eu substituiria a função pelo LIKE e, melhor ainda, pelo BETWEEN . Exemplo: SELECT * FROM `suatabela` WHERE `data` LIKE "2017-09%"; ou SELECT * FROM `suatabela` WHERE `data` BETWEEN "2017-09-01" AND "2017-09-30"; Desta forma você aproveitará todo o potencial de seus índices.
-
Faça assim: SELECT * FROM cliente WHERE nome LIKE 'josé%' AND nome LIKE '%xavier'
-
Para que servem esses SQL MODES no mysql?
pergunta respondeu ao Maurílio Martins de Denis Courcy em MySQL
SQL_MODE é a variável que informa como a sintaxe SQL será tratada. Qual o comportamento que ela terá Para mais detalhes leia https://dev.mysql.com/doc/refman/5.6/en/sql-mode.html -
Tente assim: DELIMITER $ DROP PROCEDURE CRIAR_CONSULTA$ CREATE PROCEDURE CRIAR_CONSULTA(IN IDPAC INT, IN IDMED INT, IN IDHOS INT) BEGIN DECLARE msg VARCHAR(200) DEFAULT ''; DECLARE excecao SMALLINT DEFAULT 0; DECLARE CONTINUE HANDLER FOR SQLEXCEPTION SET excecao = 1; start transaction; if (IDPAC > 0 AND IDMED > 0 AND IDHOS > 0) THEN INSERT INTO CONSULTA (IDCONSULTA, ID_PACIENTE, ID_MEDICO, ID_HOSPITAL, DATA) VALUES(NULL, IDPAC, IDMED, IDHOS, CURTIME()); IF excecao = 1 THEN SET msg = "Erro ao inserir na tabela usuario" AS Msg; ROLLBACK; END IF; ELSE SET excecao =1; SET msg = 'INSIRA OS DADOS CORRETAMENTE'; ROLLBACK; END IF; IF excecao = 0 THEN SET msg = 'DADOS INSERIDOS COM SUCESSO'; COMMIT; END IF; SELECT msg AS mensagem; END$ DELIMITER ;
-
Movendo MySQL -->> PHP
-
Faça com 3 deletes. Assim não funcionará.
-
Inserir linhas de datagridview em Mysql
pergunta respondeu ao jessf de Denis Courcy em Tutoriais & Dicas - .NET
Salvar em um só registro? Se você modelou corretamente a tabela de orcamento receberá os dados gerais e a de item_orcamento receberá um registro para cada item daquele orçamento. A gravação pode ocorrer de uma única vez, através de uma storage procedure com controle de sucesso ou fracasso de gravação. Passe o modelo de dados para o forum de MySQL e veremos o que pode ser feito. Depois, você poderá retornar a este forum para saber como integrar a linguagem de programação com o banco. -
Remova esta linha de seu código: DECLARE pcodven int; Você já declarou esta variável como parâmetro. A Redeclaração como variável ordinária anula os dados vindos como parâmetro e o select perde o valor que deveria ser usado na cláusula where
-
Movendo para o forum de PHP
-
Movendo para o forum de PHP
-
Comparar valores de tabelas distintas antes de inserir
pergunta respondeu ao ramosaires de Denis Courcy em MySQL
Faça assim: CREATE DEFINER=`root`@`localhost` PROCEDURE `verificapagamento`(IN pinfcodigo INT, IN ppagcodigo INT, IN pvencodigo INT, IN pvalor DOUBLE) BEGIN DECLARE valorvenda DOUBLE; DECLARE somavalores DOUBLE; DECLARE msg VARCHAR(1000) DEFAULT "sem mensagem"; DECLARE excecao SMALLINT DEFAULT 0; DECLARE CONTINUE HANDLER FOR SQLEXCEPTION SET excecao = 1; SELECT venvalortotal INTO valorvenda FROM venda WHERE vencodigo = pvencodigo; SELECT COALESCE(SUM(valor),0) INTO somavalores FROM informaformapgto WHERE vencodigo = pvencodigo; IF somavalores > valorvenda THEN SET mensagem = "Valor não confere"; SELECT mensagem AS msg; ELSE START TRANSACTION; INSERT INTO informaformapgto(infcodigo, pagcodigo, vencodigo, valor) VALUES (pinfcodigo, ppagcodigo, pvencodigo, pvalor); IF excecao = 1 THEN SET mensagem = "Erro na gravação"; ROLLBACK; ELSE SET mensagem = "Gravado com sucesso"; COMMIT; END; SELECT mensagem AS msg; END IF; END Não testei o código. Por favor informe o resultado.- 2 respostas
-
- mysql
- storageprocedure
- (e %d mais)
-
Movendo para o forum de PHP
-
em insert into pedido_detalhe (270,1,1); O correto seria insert into pedido_detalhe (valor, curso, pedido) values (270,1,1);
-
Tente restaurar usando o prompt de comando. digite mysql -uroot -p; informe a senha em mysql> digite source info16br; aguarde a restauração digite quit para encerrar o mysql
-
Consulta que traga registro do dia atual somente
pergunta respondeu ao diegodutra de Denis Courcy em MySQL
WHERE data=DATE(NOW()) -
Select dados da semana atual de segunda a domingo
pergunta respondeu ao Regimilson Silva de Denis Courcy em MySQL
WEEK ( data_trabalho ,1) = WEEK( NOW( ), 1 ) -
Proceda usando LIKE '%expressão1%expressao2%' ou mudando a forma de busca. Em vez de usar o LIKE, que da forma que você quer vai entrar em TABLE SCAN, use indexação por FULLTEXT. Com FULLTEXT você conseguirá fazer a pesquisa do jeito que você quer e deforma mais eficaz. Até a versão 5.6 o FULLTEXT só funcionava com engine MyISAM. A partir da versão 5.6 ele passou a funcionar em tabelas INNODB. https://pt.blog.marceloaltmann.com/en-using-the-mysql-fulltext-index-search-pt-utilizando-mysql-fulltext/ Leia sobre FULLTEXT no manual de sua versão do MySQL.