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. Este tópico está com cara de dever de casa. Vamos estudar, moçada. É muito fácil. Vocês aprenderam sobre isto no ensino fundamental. Lendo o manual do MySQL voê saberá que o uso do @ a frente de um termo transforma este termo em uma variável.
  2. SELECT nm, fn FROM sx = 'F' and age between 20 and 30 Este post está com cara de dever de casa. Vamos estudar, moçada. É muito fácil. Vocês aprenderam sobre isto no ensino fundamental.
  3. select * from minhatabela where data_insersao between @data_inicial and @data_final
  4. O modelo que você apresentou é um modelo relacional, próprio para o dia a dia de operações de input/output. Se você deseja, para efeito de performance, manter uma tabela desnormalizada, não há problema, desde que você documente. Os modelos Star e snow flake, são modelos dimensionais, próprios para estatísticas e Informações gerenciais.
  5. Denis não tem como usar %prefix% na importação? por que o meu sistema em PHP depende de alguma forma esse %prefix% Como sintaxe do MySQL, não tem jeito não. Mas este arquivo de impotação é um txt e txt pode ser modificado substituindo a string %prefix% pelo comando desejado. Salvando o arquio .txt o arquivo resultante poderá ser processado normalmente.
  6. O que é %prefix%? Isto não faz parte da sintaxe do MySQL.
  7. Leia sobre pivot table, otimização de consultas, modelos de dados star e snow flake.
  8. Para estabelecer uma sequencia sem que haja perda de performance o ideal seria substituir o - (em PP-00001 e demais aqui não descritos) por 0 (como em PP000050). Caso não haja possibilidade você pode usar o artifício de substring. Exemplo: SELECT * FROM vendadet WHERE SUBSTRING(numero,1,2) = 'PP' AND (SUBSTRING(numero),4,5) BETWEEN '00001' AND '00050') O primeiro substring restringe a busca aos elementos que comecem por 'PP' o segundo informa a sequencia. O problema neste tipo de pesquisa é que ele é realizado sequencialmente, sem índices, e isto gera TABLE SCAN. Para saber mais sobre as funções usadas leia o manual do MySQL.
  9. Quem é pp-00001 a pp000050? Que atributo(s)?
  10. Oi 'Ronierick' você quase deu a resposta e nem percebeu. SELECT * from dados where cha_data_criacao LIKE CONCAT(DATE_FORMAT(CURDATE()-1, '%d/%m/%Y'),'%'); Só faltou estudar mais um pouquinho sobre as funções do MySQL. eheh
  11. Oi 'dedas', Quando alguém te informa um nome (nome qualquer) isto é um dado ou uma informação? Quando alguém te informa um número, este número é um dado ou uma informação? Chamamos de dados os "termos" (valores, nomes, etc) que vem sem contexto e chamamos de informações estes mesmos termos quando vem dentro de um contexto. Assim, quando buscamos nomes, estes nomes devem ter um contexto para que se transformem em informações. O mesmo acontece com valores. Exemplo, o que seria mais lógico para um administrador, saber que clientes(somente os nomes) estiveram em sua loja no último mês ou saber quantos clientes estiveram em sua loja no último mês? Outro exemplo: Saber, dos clientes habituais, quais os que consomem mais e com que frequência.
  12. Eu tenho arrepios toda vez que um iniciante fala em reorganizar campos com índices primários (Campos auto_increment sempre são para íncices primários) O objetivo de índices primários em um banco de dados é garantir a unicidade de registros em tabelas e realizar ligações entre tabelas através de constraints e foreign keys. Não há necessidade de "FAZER FICAR BONITINHO". São campos que ninguém vê. Se alguém está vendo estes campos algo está errado com a arquitetura, análise e programação deste sistema.
  13. 'MatheusRomagna' Eu te dei uma sequencia de ações baseadas em que o atributo NUMERO deva conter valor único. Esta sequencia de ações passa por determinar e isolar dos duplicados somenste um registro de cada; Eliminar TODOS os registros duplicado da tabela e retornar para a tabela os registros que voce isolou. Se o atributo NUMERO não for único então esta sequencia está errada e dever-a ser pensada uma nova sequencia.
  14. Se estão duplicados então supõe-se que todos os atribustos destes registros estão em duplicidade, também. Dito isto, Faça backup antes de começas a fazer a sequencia que informarei abaixo. 1- crie uma tabela temporária com os mesmos campos da tabela com registros duplicados 2- insira dados na tabela temporária seguindo o script abaixo: INSERT INTO TABELA_TEMPORARIA (relação de campos) SELECT DISTINCT [coloque todos os campos da tabela aqui. Não use asterisco] FROM TABELA WHERE NUMERO IN ( SELECT NUMERO FROM TABELA GROUP BY NUMERO HAVING COUNT(*) > 1 ) 3 - delete os registros duplicados da tabela DELETE FROM TABELA WHERE NUMERO IN ( SELECT NUMERO FROM TABELA_TEMPORARIA) ) 4 - devolva os registros para tabela INSERT INTO TABELA SELECT * FROM TABELA_TEMPORARIA 5 - verifique e detone a tabela temporária
  15. 'andersoncaetano' O primeiro passo é isolar o problema. Buscar do histórico os últimos registros de cada usuário cuja data seja menor que 15 dias SELECT id_usuario, max(`data`) as `data` FROM historico WHERE id_responsavel = 142 AND`data` < DATE_SUB(NOW(), INTERVAL 15 DAY) GROUP BY id_usuario Segundo, apos o teste acima ter obtido o efeito desejado, é usá-lo para obter os dados do usuário SELECT u.cod_usuario, u.nome_usuario, u.id_responsavel, h.`data` FROM usuarios INNER JOIN ( SELECT id_usuario, max(`data`) as `data` FROM historico WHERE id_responsavel = 142 AND`data` < DATE_SUB(NOW(), INTERVAL 15 DAY) GROUP BY id_usuario ) h ON h.id_usuario = u.cod_usuario
  16. Oi Artur, quando você escreve um sql como o acima, está implícito que você está usando INNER JOIN para obter o conjunto interseção das tabelas. Porém na tabela caixa não há nenhum campo que informe despesas e receitas no mesmo registro. Em vez disso você usa id_ref para obter ora um registro despesa, ora um registro receita. A intercessão deste tipo de conjunto tem sempre como resultado um conjunto vazio. A solução é usar o LEFT JOIN que é a intercessão dos conjuntos A com (A-B). Veja abaixo: SELECT c.id_caixa, c.id_receita, c.id_despesa, c.valor_movimentado, c.dataehora, c.valor_caixa, c.id_usuario, d.id_ref, r.id_ref FROM tbl_caixa c left join tbl_ref_receita r on c.id_receita=r.id_ref left join tbl_ref_despesas d on c.id_despesa=d.id_ref
  17. Você pode usar o log binário e um ftp para fazer isso com segurança. Usando o log binário serão gravadas todas as transções do banco de dados. Com a versão 5.1 do mysql crie uma rotina de schedulle para que de tempos em tempos o banco de um flush logs. O flush logs força que seja gerado um novo arquivo de log binario de tempos em tempos. com o ftp você dispara, com segurança, seu arquivo de log, para a net. No provedor deverá ser cirada uma rotina para fazer o inverso. Ler do arquivo de log binário e gravar no banco.
  18. Ao contrario funciona com InnoDB e não funciona com MyISAM. Quando voce inclui a cláusula ALTER TABLE chamadoInteracao ADD CONSTRAINT nome_de_sua_fk FOREIGN KEY (`chamadoId`) REFERENCES `chamado ` (`chamadoId`) ON DELETE CASCADE Ao deletar um item da tabela chamado todos os registros de chamadoInteracao que tiverem o mesmo chamadoId serão deletados.
  19. cara as 2 primeiras maneiras que você me passou até funcionou, mas o problema é que tem que ficar fazer isso cada vez que é adicionado um produto novo, porque ele n faz a multiplicação sozinho :/ existe alguma outra maneira q você conheça? A terceira maneira faz. onde estão os valores values(2.00, 2, 2*2.00) você substitui pelo que você deseja e ele vai gravar no banco de dados
  20. OK, então. Tópico fechado. Assunto reolvido.
  21. Select preco_venda * estoque as TotalV FROM minhatabela Update minhatabela set totalV = preco_venda * estoque insert into minhatabela(preco_venda, estoque, TotalV) values(2.00, 2, 2*2.00) Escolha um dos meios acima. Leia uma pouco mais sobre SQL
  22. Neste caso talvez você possa fazer um teste carregando o txt para uma tabela temporária com load data infile create tab_temp( linha varchar(255) )engine=myisam; -- se o arquivo txt for muito grande ou create TEMPORARY tab_temp( linha varchar(255) )engine=MEMORY -- se o arquivo txt for pequeno e, depois, usando uma procedure para passar os dados para as tabelas de destino, seguindo as orientações feitas nos posts acima. Nota: Para destruir os dados da tabela temporária o melhor é usar DROP TABLE para destruir os dados da tabela MyISAM o melhor é truncate table.
×
×
  • Criar Novo...