Ajuda contando registros no MySQL

To aprendendo a mexer com MySQL e tentando fazer um sistema que registre reclamações de usuários sobre trens. Tem algum jeito de definir a coluna numReclamacoes pelo número de registros feitos na outra tabela para aquele determinado trem?

Captura%20de%20tela%20de%202019-10-20%2015-03-06

1 curtida
SELECT COUNT(reclamacao) AS numReclamacoes

Isso vai trazer a qtd de linhas da coluna reclamacao, e vai jogar na coluna numReclamacoes (vc nao precisa ter a coluna numReclamacoes)

Isso será em tempo real?

Se for o caso pode criar uma Trigger que alimenta a coluna toda vez que um registro for inserido ou removido. Contudo o COUNT é bem rápido, contudo sugiro que conte a quantidade de chaves primárias assim: SELECT COUNT(idReclamação) AS numReclamacoes FROM reclamacoes.

1 curtida

Se as tabela reclamacoes está relacionada com a tabela trens como está no desenho, você não precisa ter um número de reclamações na tabela de trens, porque, existem maneiras de recuperar a quantidade de reclamações:

  • INNER JOIN você faz uma lista e totaliza por exemplo por trens
  • INNER JOIN e trazer somente um trem ou até dois SELECT também resolve.
  • ou

Ou seja, não precisa desse campo é desnecessário e criar rotinas só para preencher isso é um controle desnecessário se o dado com um SELECT você consegue totalizar, e ficar controlando isso é um erro, entenda o dado já existe não precisa cria-lo.

Se você está aprendendo tem algumas coisas que você não deveria utilizar:

Campos assim idReclamacao deveria ser id_reclamacao ou reclamacao_id ou (nesse caso em especifico somente id), ou seja nas relações coloque ao meu ver e entendimento nome da tabela e chave que relaciona: reclamacao_id, trem_id tudo também em minusculo, mantem um padrão.

1 curtida