-
Total de itens
3.089 -
Registro em
-
Última visita
Tudo que Denis Courcy postou
-
Os dados NÃO filtrados estão vindo de T1? Creio que estejam vindo de T2. Verifique.
-
Sim. Perfeitamente.
-
Mysql condição com parâmetros (digitáveis pelo usuário)
pergunta respondeu ao Allyson Caetano de Denis Courcy em MySQL
Faça através da sua linguagem de programação,ou crie uma storage procedure. Caso opte por storage procedure, estude sobre Prepared Statements. -
Pode mostrar toda a parte de join de seu select, por favor?
-
(Resolvido) Pivot somando numero de propostas
pergunta respondeu ao crazySerk de Denis Courcy em MySQL
crazySerk, Lembra o que falei no tópico anterior? Faça o select com group by, verifique os resultados e passe os dados do select para o pivot table. Sua modificação fez com que o pivot table perdesse a função. Refaça seus passos desde o início. -
(Resolvido) Estatística por filial e níveis
pergunta respondeu ao Teixeiraa de Denis Courcy em MySQL
Nesta caso específico o campo do group by deve ser o primeiro do select.Você meciona nome_empresa no select e cod_loja no group by. -
(Resolvido) Estatística por filial e níveis
pergunta respondeu ao Teixeiraa de Denis Courcy em MySQL
Flechaus, concordo com a sintaxe COUNT(n.id_I =1)). Só com esta como incorreta. -
(Resolvido) Estatística por filial e níveis
pergunta respondeu ao Teixeiraa de Denis Courcy em MySQL
O que você está querendo é chamado de pivot table. Para corrigir seu código faça assim: SELECT ColoqueOCampoComNmeDaFilialAqui, SUM(IF(n.id_I=1,1,0)) AS 'A1', SUM(IF(n.id_I=2,1,0)) AS 'A2', SUM(IF(n.id_I=4,1,0)) AS 'B1', SUM(IF(n.id_I =5,1,5)) AS 'B2' FROM P p INNER JOIN N n ON n.id = p.id WHERE (p.datetime BETWEEN '2013-10-01' AND '2013-10-31') AND p.local = 2 GROUP BY ColoqueOCampoComNmeDaFilialAqui -
Por favor informe o resultado dos seguintes comandos: show status; show variables;
-
JCarlosQuanto a primeira pergunta não conheço o VB Net para te fornecer uma resposta adequada. Quanto a sua segunda pergunta, creio que seja a melhor opção. Em meus sistemas coloco try/catch em todas as transações para saber onde pode estar acontecendo algum erro.
-
Observe o Select que fiz na primeira fase. Veja como coloquei cada parte dele no pivot table. Faça outro select,igual ao da primeira fase e inclua o nome da empresa, e me mostre o que você conseguiu. Eu te orientarei como montar o pivot table Eu já sei o resultado. o objetivo é que você descubra e aprenda.
-
Ok. Baixei uma versão mais atualizada para testes em minha máquina de teste. A versão que uso é a 5.13. Muito antiga. A versão community que baixei para teste foi a 7.02. Houve uma modificação. Agora eles usam "DELIMITER $$" no início e "DELIMITER ;" no final.
-
Você colocou a linha "DELIMITER $$;" no início e a linha " DELIMITER ;$$" no fim?
-
Em "DROP PROCEDURE IF EXISTS `sisamb`.`pivotwizard`$$", "`sisamb`" é o nome do meu banco de teste. Use nome do seu banco de dados. remova este trecho de código da procedure. Ele corresponde a um usuário local em meu banco de teste. Eu utilizo o SQLyog como gerenciador de banco de dados MySQL. Ele utiliza esta notação "DELIMITER $$;". Dependendo do gerenciador de bd que você utiliza use "DELIMITER $$" no lugar de "DELIMITER $$;" e use "DELIMITER ;" no lugar de "DELIMITER ;$$"
-
Oi crazySerk, para obter o ano e mes de uma data você pode usar a substring(campodata,1,7) ou combinar ano e mes com concat. Exemplo Concat(year(campodata),month(campodata)). Para obter o faturamento do jeito que você quer, vou exemplificar em duas etapas. Siga-as para poder entender. Vou usar o campo data_cadastro como base para data pois é o único campo data na tabela que você postou, Fase 1. Montando uma consulta que agrupe os valores por empresa e por competencia(ano/mes). select cod_empresa, substring(data_cadastro,1,7) as competencia, sum(valor_veiculo) as valor from propostas group by cod_empresa, competencia;Fase 2 Exemplo de pivot table. Passando competencia para titulo de coluna e representando empresa em linhas.aplicando a procedure pivot table publicada em [link]http://scriptbrasil.com.br/forum/index.php?showtopic=150954[/link] e corrigida abaixo: chamada do pivot table conforme o select acima. call pivotwizard("empresa", "substring(data_cadastro,1,7)", "valor_veiculo", "propostas", "data_cadastro>'2011-01-01'"); abaixo o codigo corrigido do pivottable DELIMITER $$; DROP PROCEDURE IF EXISTS `sisamb`.`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_pivot; DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1; DROP TABLE IF EXISTS temp_pivot; SET @M_sqltext = CONCAT('CREATE TEMPORARY TABLE temp_pivot ', ' 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_pivot 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 ;$$
-
Se você está gravando um histórico, então é porque você quer guardar o valor anterior do registro atual na tabela histórico, certo? Se sim, então você deveria usar OLD e não NEW .
-
Normalmente estes controles são colocados dentro do sistema que utiliza estas bases de dados. Isto porque, normalmente, os usuários não fazem acessos diretos as bases de dados (BD). Eles fazem acessos ao sistema, com seus respectivos logins, que faz acesso as bases, com um login específico ao banco de dados. Dependendo da utilização de um sistema, controles de log são pesados. Incham rapidamente e podem degradar a performance do sistema com a mesma velocidade que incham. Uma forma de você, talvez, possa utilizar é usar o log binário. Ele grava todas as transações realizadas no banco de dados. Eu o utilizo com a versão 5.1, que possui schedulle, para reduzir o perigo de um desastre, pois tenho mais de 1000 inputs por dia. Assim, entre o backup de fechamento do dia anterior e o próximo backup, tenho uma salvaguarda ativada a cada hora através de um flush all disparado pelo schedulle. Os arquivos gerados pelo dump não ficam no banco e não ocupam muito espaço em disco. No meu caso eles permanecem por apenas 48 horas. Estude o manual da versão de seu BD para mais detalhes.
-
Erro: Authentication to host '' for user '' using meth
pergunta respondeu ao jrsiqueira de Denis Courcy em MySQL
entre na tabela user do banco mysql e altere manualmente todas as opções para Y (yes), abaixo as opções de privilégios permitidas para a versão que uso (5.1): `Select_priv`, `Insert_priv`, `Update_priv`, `Delete_priv`, `Create_priv`, `Drop_priv`, `Reload_priv`, `Shutdown_priv`, `Process_priv`, `File_priv`, `Grant_priv`, `References_priv`, `Index_priv`, `Alter_priv`, `Show_db_priv`, `Super_priv`, `Create_tmp_table_priv`, `Lock_tables_priv`, `Execute_priv`, `Repl_slave_priv`, `Repl_client_priv`, `Create_view_priv`, `Show_view_priv`, `Create_routine_priv`, `Alter_routine_priv`, `Create_user_priv`, `Event_priv`, `Trigger_priv` -
Erro: Authentication to host '' for user '' using meth
pergunta respondeu ao jrsiqueira de Denis Courcy em MySQL
Crie o usuário root para @%. Quando você instala o mysql ele cria o usuário root para @localhost, apenas. -
Erro: Authentication to host '' for user '' using meth
pergunta respondeu ao jrsiqueira de Denis Courcy em MySQL
@"RMGR-SIQUEIRA" é o nome da máquina que você está usando. Eu NÃO recomendo, por questões de segurança, mas você pode criar um usuário root@% para habilitar o root para qualquer máquina. Eu tenho um usuário especial com grant all para fazer manutenções a distância e outro com grant de select, insert, delete e update para uso do sistema. Nunca uso o root para isso. root é para ser usado de forma local e com muita cautela. -
as bases mysql e information_schema tem as informações que você quer.
-
poderia postar um trechindo do código de como você esta montando isso? pois se este cálculo representa uma coluna calculada em seu select o termo as valor deveria funcionar.
-
use truncate combinado com round. exemplo: select truncate(round(5/6,2),9)
-
Use um trigger para gravar a data de criação do registro. Menos trabalhoso que usar o php. DELIMITER $$; DROP TRIGGER `nomeDoSeuBancoDeDados`.`produto_trig_bi`$$ CREATE TRIGGER `produto_trig_bi` BEFORE INSERT ON `produto` FOR EACH ROW BEGIN SET NEW.datacriacao = NOW(); END; $$ DELIMITER ;$$
-
Verifique se o código abaixo corresponde ao que você quer. SELECT cod_opcional, desc_opcional FROM veic_opcional WHERE todos_modelos <> 2 AND cod_modelo = $codModelo UNION SELECT v.cod_opcional, v.desc_opcional FROM veic_opcional v LEFT JOIN empresas_veiculos ev ev.cod_modelo = v.cod_modelo WHERE v.todos_modelos <> 2 AND NOT ev.cod_marca IS NULL UNION SELECT cod_opcional, desc_opcional FROM veic_opcional WHERE todos_modelos = 2 AND cod_marca IS NULLPode melhorar o codigo para SELECT cod_opcional, desc_opcional FROM veic_opcional WHERE todos_modelos <> 2 AND cod_modelo = $codModelo UNION SELECT v.cod_opcional, v.desc_opcional FROM veic_opcional v INNER JOIN empresas_veiculos ev ev.cod_modelo = v.cod_modelo WHERE v.todos_modelos <> 2 UNION SELECT cod_opcional, desc_opcional FROM veic_opcional WHERE todos_modelos = 2 AND cod_marca IS NULL Nota. Não conheço PHP, mas consigo ler quase todo tipo de código. $codModelo fois a forma que encontrei para representar e exibir um parâmetro. Pode ser que você necessite de mais parâmetros. Se for o caso, eles devem ficar nas respectivas cláusulas WHERE