-
Total de itens
3.089 -
Registro em
-
Última visita
Tudo que Denis Courcy postou
-
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.
-
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
-
Sim. Faça ORDER BY COUNT(nomedocampoequeemorg) DESC, no fim de seu comando SELECT.
-
'jorge teruya', Em vez de usar este while confuso, use GROUP BY. Será muito mais eficiente.
-
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.
-
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.
-
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?
-
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.
-
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.
-
Já pensou em salvar a planilha como CSV e depois importá-la no MySQL?
-
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.
-
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.
-
Então você deve estar com algum problema de acesso, pois eu consegui sem problemas.
-
'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;
-
'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;$$
-
Coloque o nome da coluna entre CRASES. não funciona com crase, retorna vazio Tentou assim? SELECT `text-4ecb77d83b9d9` FROM fm_data_10
-
Dê uma lida no manual do MySQL 21.3. MySQL Connector/J
-
Crie uma STORAGE PROCEDURE para executar este procedimento.
-
SELECT table_comment FROM information_schema.tables
-
Banco: INFORMATION_SCHEMA Tabela: TABLES
-
(Resolvido) Executar um script para criar DataBase - Eroo de syntax
pergunta respondeu ao Joseh de Denis Courcy em MySQL
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. -
Insert concorrente (mais de um ao mesmo tempo)
pergunta respondeu ao wRangel de Denis Courcy em MySQL
'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. -
'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;
-
Crie trigger que alimente sua tabela a cada inserção na tabela origem.
-
Atualizar outra tabela em Insert, Update e Delete
pergunta respondeu ao MaktubBruno de Denis Courcy em MySQL
'MaktubBruno' Estude sobre trigger