Jump to content
Fórum Script Brasil

Denis Courcy

Moderadores
  • Posts

    3089
  • Joined

  • Last visited

Everything posted by Denis Courcy

  1. Denis Courcy

    Usando Like

    Colunas para o livro, capítulo, versículo e texto. Assim será mais fácil de pesquisar.
  2. Cadê a vírgula entre o primeiro e o segundo "home"? Além disso seu INSERT informa 5 campos e seu VALUES possui somente 4
  3. Só um complemento. A fórmula valor = valor*(1+(param_ajuste/100)) Ajusta o valor para cima. Exemplo: valor = 100; param_ajuste = 10; Novo resultado de valor = 110 (subiu 10%) E a fórmula valor = valor*(1-(param_ajuste/100)) Ajusta o valor para baixo. Exemplo: valor = 100; param_ajuste = 10; Novo resultado de valor = 90 (desceu 10%)
  4. Bom dia. Sua tarefa, basicamente, utiliza um dos sois updates abaixo: UPDATE apartamento SET valor = valor*(1+(param_ajuste/100)) WHERE codigo_cond = param_cod_condominio; Ou UPDATE apartamento a INNER JOIN condominio c ON a.codigo_cond = c.codigo SET valor = valor*(1+(param_ajuste/100)) WHERE c.nome = param_nome_condominio; Agora é só colocar um dos dois na procedure.
  5. Leia isto. https://www.horadecodar.com.br/2020/04/29/como-conectar-python-com-mysql/ https://www.w3schools.com/python/python_mysql_insert.asp
  6. Este tipo de consulta é chamado de pivot table. Funciona assim: SELECT produto, SUM(IF(DATA='10/2020',faturamento,0)) AS `Fat_10/2020`, SUM(IF(DATA='11/2020',faturamento,0)) AS `Fat_11/2020` FROM nomedatabela GROUP BY produto Para fazer com que esta query rode dinamicamente é necessário criar uma procedure. É mais fácil fazer através de programação
  7. Rode a query com a cláusula EXPLAIN a frente dela. exemplo EXPLAIN UPDATE.... ou EXPLAIN SELECT ... O EXPLAIN não afetará os dados em sua base. Ele mostrará onde estão os gargalos de índices em sua query. Verifique indices. Em último caso, mostre a query para que possamos ajudá-lo melhor
  8. Qual a composição do argumento EntradaMat? Crie uma tabela e consulte-a. Se retornar NULL não é um feriado. Senão, use a função DAYOFWEEK que, ao passar uma data para ela, retorna 1 para domingo, ..., e 7 para sábado.
  9. Vamos por partes. Como você resolveria o item a? Mostre-me e corrigirei. Tenho por norma não fazer exercícios para alunos. Mas, orientá-los na execução dos mesmos.
  10. Como este select pode retornar multiplas linhas, a instrução BETWEEN na cláusula WHERE do primeiro SELECT não sabe como apresentar a resposta a sua pergunta. Sugiro que você utilize um JOIN entre o primeiro e o segundo SELECT e, assim, consiga obter o que deseja.
  11. Você pode baixar e instalar a versão mysql-5.1.30-win32. Não tenho problemas com a instalação dela em nenhuma versão 32 ou 64 bits de windows XP a Windows Server 12.
  12. Corrigi o SELECT que enviei anteriormente SELECT dtLeitura, SUM(leitura) AS TT_Leitura FROM ( SELECT DATE(L1.horario) AS dtLeitura, (L1.leitura * -1) AS leitura FROM leituras L1 INNER JOIN ( SELECT MIN(L2.horario) AS hora2 FROM leituras L2 WHERE DATE(L2.horario) = '2020-11-05' ) Minimo ON Minimo.hora2 = L1.horario UNION SELECT DATE(L3.horario) AS dtLeitura, L3.leitura AS leitura FROM leituras L3 INNER JOIN ( SELECT MAX(L4.horario) AS hora4 FROM leituras L4 WHERE DATE(L4.horario) = '2020-11-05' ) Maximo ON Maximo.hora4 = L3.horario ) a; É uma repetição do exercício anterior onde a menor leitura (aquele multiplicado por -1) será o maior valor do dia anterior e a menor leitura será o menor do dia atual. Tente assim: SELECT dtLeitura, SUM(leitura) AS TT_Leitura FROM ( SELECT DATE(L1.horario) AS dtLeitura, (L1.leitura * -1) AS leitura FROM leituras L1 INNER JOIN ( SELECT MAX(L2.horario) AS hora2 FROM leituras L2 WHERE DATE(L2.horario) = '2020-11-05' ) Minimo ON Minimo.hora2 = L1.horario UNION SELECT DATE(L3.horario) AS dtLeitura, L3.leitura AS leitura FROM leituras L3 INNER JOIN ( SELECT MIN(L4.horario) AS hora4 FROM leituras L4 WHERE DATE(L4.horario) = '2020-11-06' ) Maximo ON Maximo.hora4 = L3.horario ) b;
  13. A primeira coisa a fazer é trocar o tipo DATETIME por TIMESTAMP. A segunda coisa é criar um campo dtLeitura do tipo DATE e criar um índice por ele para acelerar o processo. O código pode ser como o abaixo ou melhorar conforme sua vontade. Usei a função DATE para obter a data sem a hora e assim, facilitar a pesquisa. Porém isto causará TABLE SCAN. Ou seja, varrerá toda a tabela. A primeira leitura multiplica por -1 para inverter o sinal e obter a subtração dos dois elementos de leitura. SELECT SUM(leitura) AS consumo FROM ( SELECT (leitura * -1) AS leitura, MIN(horario) AS horario FROM leituras WHERE DATE(horario) = '2020-11-05' GROUP BY DATE(horario) UNION SELECT leitura, MAX(horario) AS horario FROM leituras WHERE DATE(horario) = '2020-11-05' GROUP BY DATE(horario) ) a;
  14. Terá que desenvolver um programa para isto. Leia> https://www.hardware.com.br/comunidade/xml-script/1164328/
  15. Esta select está CONTANDO o número de registros por cana nome na intercessão de conjuntos que você forneceu. Para fazer o que você escreveu você deverá usar a função SUM, que somará os valores desejados. Então seria algo como SUM(Preço Unitário * Quantidade) AS TT_VendaTotal, que daria a soma total de vndas líquidas.
  16. Este erro informa que você informou 20 campos mas que ele espera 21. Por isso não deixa gerar a procedure. Reveja seu código.
  17. Bom dia. Estas tabelas se relacionam? Se sim. Com quais campos? O campo nome é o campo comum entre as tabelas? Por exemplo. Tabela Produto Nome=X Na tabela insumos teria nome=X, tipo=x, data_produção=xxxx-xx-xx, preço=0.00, estoque=xxxx O campo estoque é numérico? Se sim não deveria ser do tipo numerico e não varchar?
  18. Remova espaço entre emum e parenteses e entre decimal e parenteses
  19. Para remover a mascara use o REPLACE UPDATE tabela SET campo = REPLACE(REPLACE(REPLACE(REPLACE(p_cpfcnpj, ".", ""), "-", ""), "/", ""), " ", "") ; O update acima grava os dados desformatados . O primeiro REPLACE remove os espaços; o segundo remove as barras; o terceiro remove os traços e o quarto remove os pontos. UPDATE tabela SET p_cpfcnpj = NULL WHERE LENGHT(p_cpfcnpj) < 11; No update acima ele verifica, depois de desformatar o campo p_cpfcnpj, se ele é menor que 11 digitos e o grava como nulo. Para formatar o CNPJ use a função abaixo da seguinte forma: UPDATE tabela SET CONCAT(SUBSTR(p_cpfcnpj,1,2),".",SUBSTR(p_cpfcnpj,3,3),".",SUBSTR(p_cpfcnpj,6,3),"/",SUBSTR(p_cpfcnpj,9,4),"-", SUBSTR(p_cpfcnpj,13,2)) WHERE LENGHT(p_cpfcnpj) > 11; E para formates o CNPJ use UPDATE tabela SET p_cpfcnpj = CONCAT(SUBSTR(p_cpfcnpj,1,3),".",SUBSTR(p_cpfcnpj,4,3),".",SUBSTR(p_cpfcnpj,7,3),"-",SUBSTR(p_cpfcnpj,10,2)) WHERE LENGHT(p_cpfcnpj) < 12
  20. Bom dia. Fiz um teste e retornou sem problemas. Veja o código que usei. SELECT c1.* FROM base1.cliente c1 INNER JOIN base2.cliente c2 ON c2.matricula = c1.matricula LIMIT 10 É importante que os dois bancos estejam no mesmo servidor de bd (mesmo serviço).
  21. Oi Antônio, Vamos fazer isso de uma forma antiga e bem didática, com lápis e papel. Com base no item (a), desenhe um retângulo e coloque nele o nome LOJA; Dentro do retângulo escreva os nomes dos atributos. CNPJ_LOJA, NOME_LOJA, SIGLA_LOJA; Como dever de casa, faça o mesmo para CLIENTES e PRODUTOS Me mostre o resultado.
  22. Neste select você não há menção às tabelas equipamento e caixa em associação com outra tabela. Outro problema é o do GROUP BY. Ele pressupõe que você fará algum tipo de agrupamento usando SUM, COUNT ou outra função deste tipo. No select acima não existe nenhuma destas funções. usando a sintaxe correta, abaixo podemos ver onde estão os erros mais graves de sua select SELECT data_envio, cx.numero_pedido, nome_cliente, m.nome, co.quantidade FROM conteudo co INNER JOIN pedido p ON p.numero_pedido = co.numero_pedido INNER JOIN cliente cl ON cl.idcliente = p.cliente_idcliente INNER JOIN modelo m ON m.idmodelo = co.modelo_idmodelo INNER JOIN equipamento e ON ?????? INNER JOIN caixa cx ON ????? WHERE ????? GROUP BY cx.numero_pedido Se você vai agrupar somente por numero_pedido então não haverá necessidade dos campos data_envio, nome_cliente, e m.nome. E o campo co.quantidade deverá estar em uma das funções de agrupamento mencionadas acima.
  23. Melhore a pergunta
  24. Por que não colocar este campo como NOT NULL e evitar que tenhas este trabalho?
×
×
  • Create New...