Ir para conteúdo
Fórum Script Brasil

Denis Courcy

Moderadores
  • Total de itens

    3.089
  • Registro em

  • Última visita

Posts postados por Denis Courcy

  1. Em 24/02/2021 em 01:53, Paulo Pacheco disse:

    echo "INSERT INTO pages (title, url , body, updated, created) values ("home" "home..", NOW(), NOW())"| mysql -u root -p pp_criando_site_com_php

    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

  2. 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%)

  3. 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.

  4. 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

  5. Qual a composição do argumento EntradaMat?

    16 horas atrás, ismorfi disse:

    Pensei em otimizar deixando programado os feriados nacionais, e ao rodar a consulta ela deve verificar se na semana houve feriado e em qual dia

    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.

  6. 14 horas atrás, Ogirdor_HC disse:

    select ts.criacao from owner.tabela ts where ts.chamado in('1455678','1459783') group by ts.chamado

    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.

     

  7. 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;   

     

    Em 09/11/2020 em 11:54, flaviokowalske disse:

    Não consegui uma forma de buscar valores de campos específicos em dias diferentes.

    É 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; 

     

  8. 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;

     

  9. 22 horas atrás, rafaelbahamut disse:

    select funcionarios.nome, funcionarios.IDFuncionario, count(*) as "total de vendas" 

    from funcionarios

    INNER JOIN pedidos
    on funcionarios.IDFuncionario = pedidos.IDfuncionario
    INNER JOIN pedidos_detalhes
    on pedidos.IDPedido = pedidos_detalhes.IDPedido
    group by pedidos.IDFuncionario;

    Esta select está CONTANDO o número de registros por cana nome na intercessão de conjuntos que você forneceu.
     

     

    22 horas atrás, rafaelbahamut disse:

    eu preciso listar quanto cada funcionário vendeu (valor liquido e quantidade de itens).
    Considerar como Venda Líquida, a Venda Total (Preço Unitário x Quantidade) 

    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.
     

  10. 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?

  11. 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

     

     

     

  12. 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.

  13. Em 04/03/2020 em 09:18, dandrade disse:

    SELECT data_envio, caixa.numero_pedido, nome_cliente, modelo.nome,conteudo.quantidade FROM conteudo,equipamento, caixa, pedido,cliente, modelo WHERE pedido.numero_pedido = conteudo.numero_pedido AND cliente.idcliente = pedido.cliente_idcliente AND modelo.idmodelo = conteudo.modelo_idmodelo GROUP BY caixa.numero_pedido

    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.

×
×
  • Criar Novo...