Quando Utilizar Inner, Left, Right e outras variações do Join no MySQL – Parte 1

Sempre tive muitas dúvidas sobre a utilização do “join” na amarração das tabelas dos banco de dados feitos pelo meu sistema, por vezes utilizava por intuição e por outras na velha tentativa e erro, como gosto de saber o que estou fazendo e de me sentir seguro quanto estou programando, fui estudar um pouco mais sobre o assunto e trago de forma prática um pouco dos detalhes que observei e que são de grande utilidade para quem está programando.

No sistema que vou utilizar de exemplo, tenho quatro tabelas que utilizo para administrar inscrições em eventos para um cliente. Temos então a tabela “cadastrogeral” onde tenho os dados dos participantes (nome, telefone, endereço, e-mail, etc), a tabela “categoria” onde cadastro as categorias com os respectivos preços referente a cada evento que o cliente organiza, a tabela “status” onde tenho os tipos de status de controle do participante em determinado evento (inscrito e não pago, inscrito e pago, retirado do evento, etc) e por fim tenho a tabela “inscricoes” onde controlo pelo id do cadastro geral em qual ou quais eventos aquele participantes está, que categoria está inscrita e em que status o mesmo se encontra.

Nesse cenário é fundamental que eu tenha uma amarração muito bem feita para criar ferramentas que ajudem meu cliente a agrupar inscrições por categoria, a achar indivíduos inscritos e que ainda não estão com suas inscrições pagas, quais categorias estão sendo mais procuradas, se existe alguma inscrição insconsistente, ou seja, a pessoal se inscreveu e não tem categoria determinada e outros fatores a serem pesquisados em uma organização de evento.

Vamos ver o primeiro tipo de amarração, utilizando todas as tabelas e para verificar as inscrições válidas, ou seja, completas, com associação na tabela de inscrição e com categoria e status existentes. Vejamos o código:

SELECT
  *
FROM
  `cadastrogeral` INNER JOIN
  `inscricoes` ON `cadastrogeral`.`codigo` = `inscricoes`.`cadastro` INNER JOIN
  `categoria` ON `categoria`.`codigo` = `inscricoes`.`categoria` INNER JOIN
  `status` ON `status`.`codigo` = `inscricoes`.`status`;

Para exemplificar sistematicamente o comando acima veja o quadro a seguir:

Clique na imagem para ampliar

Nesse exemplo só serão exibidas as inscrições que tenham correpondências em todas as tabelas, temos que ter uma pessoa inscrita no cadastro geral com uma inscrição criada para um evento na tabela inscrições em uma categoria existente e com um status também existente. Só nessa condição teremos o registro exibido. Uma função que serve somente para verificação de inscrições no evento da forma correta.

Qualquer coisa que fuja dessa condição será ignorada na exibição dos dados. Basta que apenas uma condição não seja atendida para o registro não aparecer, por exemplo: o indivíduo está inscrito no evento, em uma categoria existente só que o sistema não foi progamado de forma correta e a inscrição não recebeu um status, está igual a “null” ou ainda “0” na tabela “inscricoes” e esse código não tem correspondência na tabela de status, o registro não será exibido no comando acima, o que vai impossibilitar o administrador do evento de ficar sabendo do ocorrido e tomar as providências necessárias.

No próximo artigo veremos o Left Join! Abraço e até lá!

Compatilhe esse artigo!

Um comentário sobre “Quando Utilizar Inner, Left, Right e outras variações do Join no MySQL – Parte 1

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Esse site utiliza o Akismet para reduzir spam. Aprenda como seus dados de comentários são processados.