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. Denis Courcy

    Somar

    Acrescente a cláusula WITH ROLLUP ao final da cláusula GROUP BY (veja o manual de sua versão). Ele criará um linha com a soma por quebra no group by.
  2. O SELECT acima está errado. Você deve converter datainicio e datafim para o formato data e não dtevento para caracter. Datainicio e datafim devem estar no formato %Y-%m-%d. Ou seja AAAA-MM-DD
  3. Sim. Faça ORDER BY COUNT(nomedocampoequeemorg) DESC, no fim de seu comando SELECT.
  4. 'jorge teruya', Em vez de usar este while confuso, use GROUP BY. Será muito mais eficiente.
  5. Antes de postar novamente a procedure, por favor execute o primeiro código que passei. Você falou que ficou rodando, demorando e não apresentando o resultado. Teste o select que passei para afastarmos o problema de table scan em suas tabelas devido a falta de algum índice, já que existem várias tabelas envolvidas em joins.
  6. Observe o modelo que você postou. Eu o segui plenamente. Pelo que entendi de seu problema, não importa qual professor que leciona a disciplina. Importa que, quando o aluno falta ele falta a uma disciplina. Um aluno (tb_alunos) pertence a uma turma (tb_alunos->tb_turmas) uma turma possui varias disciplinas (tb_turmas->tb_disc_prof_turma->tb_disciplinas). Uma aula (tb_disc_prof_turma->tb_aulas) pode ter presença ou falta (tb_disc_prof_turma->tb_aulas->tb_faltas). Outro ponto: No parâmetro P_Value da procedure, onde está 'IF(NOT f.cod_falta IS NULL, 1, 0)' passe para 'IF(f.cod_falta IS NULL, 0, 1)', para facilitar o entendimento da lógica.
  7. Denis Courcy

    Erro de Sintaxe

    Não conheço NADA de PHP, mas de tanto ver códigos de PHP aqui descobri que o caracter de ponto "." é usado para concatenar strings, correto? Descobri, também de variáveis vem precedidas do caracter "$", correto? Então, como leigo que sou, a sua variável $cod_nomes_produtos não deveria estar escrita como abaixo?
  8. Oi 'degui', Montei, em minha base de testes, a estrutura de dados que você passou no primeiro post deste tópico. Elaborei a consulta abaixo para refletir os resultados que você está querendo: select a.aluno, d.disciplina, count(f.cod_falta) from tb_alunos a inner join tb_turmas t ON t.cod_turma=a.cod_turma inner join tb_disc_prof_turma dpf ON dpf.cod_turma = t.cod_turma inner join tb_disciplinas d ON d.cod_disciplina = dpf.cod_disciplina inner join tb_aulas au ON au.cod_disc_prof_turma = dpf.cod_disc_prof_turma inner join tb_faltas f ON f.cod_aula = au.cod_aula group by a.aluno, d.disciplina; Apliquei a estrutura acima a procedure de pivot table que desenvolvi e disponibilizei aqui: -- pivotwizard(P_Row_Field, P_Column_Field, P_Value, P_From,P_Where) call bancodeteste.pivotwizard('a.aluno', 'd.disciplina', 'IF(NOT f.cod_falta IS NULL, 1, 0)', 'tb_alunos a inner join tb_turmas t ON t.cod_turma=a.cod_turma inner join tb_disc_prof_turma dpf ON dpf.cod_turma = t.cod_turma inner join tb_disciplinas d ON d.cod_disciplina = dpf.cod_disciplina inner join tb_aulas au ON au.cod_disc_prof_turma = dpf.cod_disc_prof_turma inner join tb_faltas f ON f.cod_aula = au.cod_aula', '1=1'); Veja se funciona.
  9. Procure aqui no forum os artigos relacionados com o assunto "pivot table". Já expliquei isto algumas vezes e farei novamente após você ter pesquisado e não entendido alguma parte.
  10. Já pensou em salvar a planilha como CSV e depois importá-la no MySQL?
  11. Se não for possível alterar o tipo do campo ou inserir outro campo e controlar atualizações e inserções deste campo através de trigger, então tente gravar ou ordenar na forma como o MySQL armazena datas. Ou seja AAAA-MM-DD onde AAAA é ano, MM é mês e DD é dia.
  12. Oi Igor Souza Se você está qualquer versão acima de 5.1.x, então utilize o schedulle. Um tipo de procedure que é executado automaticamente pelo banco de dados na hora e nos dias que você desejar.
  13. Denis Courcy

    #Error 1307

    Então você deve estar com algum problema de acesso, pois eu consegui sem problemas.
  14. Denis Courcy

    #Error 1307

    'Marcos Silva', Tente novamente assim: DELIMITER $$ create procedure agrupaServicos () BEGIN declare done int default 0; declare rpi_servico varchar(80); declare lista_servico varchar(1024); declare curItens cursor for select rpi_servico from nfse_rps_item; declare continue handler for not found set done = 1; open curItens; repeat fetch curItens into rpi_servico; if (lista_servico <> '') then set lista_servico = concat(lista_servico, ' ,'); end if; set lista_servico = concat(lista_servico, rpi_servico); until done end repeat; close curItens; END$$ DELIMITER;
  15. Denis Courcy

    #Error 1307

    'Marcos Silva', Tente assim: DELIMITER $$; create procedure agrupaServicos () BEGIN declare done int default 0; declare rpi_servico varchar(80); declare lista_servico varchar(1024); declare curItens cursor for select rpi_servico from nfse_rps_item; declare continue handler for not found set done = 1; open curItens; repeat fetch curItens into rpi_servico; if (lista_servico <> '') then set lista_servico = concat(lista_servico, ' ,'); end if; set lista_servico = concat(lista_servico, rpi_servico); until done end repeat; close curItens; END$$ DELIMITER;$$
  16. Coloque o nome da coluna entre CRASES. não funciona com crase, retorna vazio Tentou assim? SELECT `text-4ecb77d83b9d9` FROM fm_data_10
  17. Dê uma lida no manual do MySQL 21.3. MySQL Connector/J
  18. Denis Courcy

    duvida add +

    Crie uma STORAGE PROCEDURE para executar este procedimento.
  19. SELECT table_comment FROM information_schema.tables
  20. Banco: INFORMATION_SCHEMA Tabela: TABLES
  21. TYPE foi a palavra chave para determinar a engine de uma tabela até a versão 4.1. A partir da versão 5.x passou-se a usar a palavra ENGINE. Substitua as palavras TYPE por ENGINE em seu script e execute novamente.
  22. 'wRangel' Minha orientação inicial é que você faça o impossível para passar este atributo para auto_increment. Assim você não terá dor de cabeça e não precisará implementar nenhuma modificação em sua aplicação. Se você quer ter dor de cabeça, então crie uma tabela ou um campo em uma tabela de parâmetros, armazene o último número registrado para seu ID neste campo, e toda vez que alguém for gravar um registro novo, você dá um LOCK na tabela de parâmetro, faz o update de id=id+1, grava o registro em sua tabela e libra o lock da tabela de parametro. Não esquecendo de modificar sua aplicação para testar o lock.
  23. 'Tales' Use GROUP_CONCAT. Assim: SELECT l.nome_livro, GROUP_CONCAT(a.nome_autor) as `Autor(es)` FROM livro l INNER JOIN autoria at ON at.id_livro = l.id_livro INNER JOIN autor a ON a.id_autor = at.id_autor GROUP BY l.nome_livro;
  24. Crie trigger que alimente sua tabela a cada inserção na tabela origem.
×
×
  • Criar Novo...