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. 17 horas atrás, vinyipa disse:

    O problema é que nessa tabela podem ter vários atendimentos para os clientes, então preciso pegar apenas a data do ultimo atendimento com venda para cada cliente correspondente da tabela de cliente.

    Para pegar a data do último atendimento você tem algumas opções.

    1 - se a tabela de atendimentos tem um id único, basta selecionar  max(IdAtendimento) WHERE idCliente = xxx. Onde xxx é o id do cliente que você quer. Isto te dará o atendimento mais atual para este cliente.

    2 - ainda seguindo a primeira opção você pode fazer um select buscando o campo idAtendimento WHERE idCliente = xxx order by idAtendimento limit 1. que retornará somente um registro dentro do filtro que você deseja.

    3 buscando pela data de atendimento, da mesma forma das opções acima, desde que a data de atendimento seja do tipo datetime.

  2. Inclua o campo saldo anterior em sua tabela e o abasteça conforme a inclusão/alteração de cada registro.

    Ou faça via programação, usando uma variável auxiliar.

    Por programação você pode construir uma stored procedure, armazenando os dados em uma tabela temporária e exibindo ao final com um simples select.

  3. select sum(favoravel) as favoravel, sum(contrarios) as contrarios
    from (SELECT 
    Sum((voto1 = 'A Favor') + (voto2 = 'A Favor') + (voto3= 'A Favor') + (voto4= 'A Favor') + (voto5= 'A Favor')) AS FAVORAVEL,
    0 as CONTRARIOS
    from votacao
    WHERE
    votacao.ptc_id = '116' )
    UNION 
    (SELECT 0 as FAVORAVEL, 
    Sum((voto1 = 'Contra') + (voto2 = 'Contra') + (voto3= 'Contra') + (voto4= 'Contra') + (voto5= 'Contra')) AS CONTRARIOS
    from votacao
    WHERE
    votacao.ptc_id = '116' );

     

  4. O ideal seria haver duas tabelas. Uma para os dados da votação e outra para registrar os votos.

    Votação(idVotação, demais dados)

    Votos(idVotacao, voto).

    A partir daqui seria muito mais fácil fazer relacionamentos de contagens, pois serviria a qualquer propósito de voto.

    Na forma atual, a tabela votação está desnormalizada o que implica em mudar do código sempre que alterar o número de votantes.

     

     

  5. Eu também não conhecia este tipo de arranjo.

    Testei empiricamente diversas vezes até obter um entendimento.

    Pelo que entendi a igualdade está relacionada com o numero do registro do retorno do select abaixo:
     

    SELECT Idade 
    FROM PESSOA AS p1 
    WHERE (SELECT COUNT(DISTINCT(Idade))=2 
           FROM PESSOA AS p2 
           WHERE p1.Idade <= p2.Idade
          )

    Se coloco 1 ele retorna a maior idade encontrada;

    Se coloco 2 retorna a segunda maior idade e por aí vai.

  6. Tem certeza que este select está correto? Que você o transcreveu corretamente?

    Segue abaixo a montagem que fiz para poder obter a resposta e te explicar.
     

    CREATE TABLE pessoa(
    nome VARCHAR(30),
    cpf VARCHAR(11),
    idade SMALLINT,
    naturalidade VARCHAR(30)
    )
    ;
    INSERT INTO pessoa(nome,cpf,idade,naturalidade)
    VALUES
    ('ALICE SILVA','12345678910',22,'Distrito Federal'),
    ('BRUNO OLIVEIRA','12365478910',57,'Rio de Janeiro'),
    ('CAIO NOGUEIRA','12314578901',43,'Amazonas')
    ;
    SELECT p0.nome, p0.idade 
    FROM PESSOA p0
    WHERE p0.Idade = (SELECT DISTINCT(Idade) 
                   FROM PESSOA AS p1 
                   WHERE (SELECT COUNT(DISTINCT(Idade))=22 
                          FROM PESSOA AS p2 
                          WHERE p1.Idade <= p2.Idade
                         )
                  )
    ORDER BY p0.Nome

    Não reconheço a instrução COUNT(DISTINCT(Idade))=2

  7. Você deve ter um usuário e senha para cada um(pessoa ou grupo) que acessar o sistema.

    Por exemplo 

    root/senha do root (somente o administrador)

    suporte/senhasuporte (somente para o pessoal/pessoa de suporte)

    sistema/senhaSistema (para acesso ao seu sistema). Neste caso os bancos acessados serão somente os da produção e somente os bancos trabalhados pelo seu sistema.

    O administrador informará quais as permissões de acesso de cada pessoa ou grupo.

    Na empresa em que trabalho eu sou o administrador do banco e uso usuários e senhas da forma acima. Raramente uso a senha do root.

    Ninguém deve ter a senha do root. Esta deve ficar envelopada e guardada para uso emergencial, com anotação em livro apropriado em caso de rompimento do lacre do envelope. 

    Sobre log, recomento a leitura e o estudo do manual do mySQL da versão que você usa, procurando pelo tópico LOG BINNARY.

     

×
×
  • Criar Novo...