Você está aqui: MySQL ::: Dicas & Truques ::: Joins (Junções) |
Como usar a junção INNER JOIN (ou CROSS JOIN) para agrupar dados de duas ou mais tabelas no MySQLQuantidade de visualizações: 11749 vezes |
A junção INNER JOIN (que pode ser substituída por CROSS JOIN) do MySQL é usada quando queremos agrupar dados de duas ou mais tabelas nas quais deverá haver, no mínimo, uma correspondência (match) nos campos das tabelas envolvidas. Vamos ver um exemplo? Considere duas tabelas: jogadores e times. Um jogador pode jogar em nenhum (zero) ou um time e um time pode conter zero ou mais jogadores. Aqui a cardinalidade é de 1 x N. Comece criando a tabela de times: Comando DDL CREATE TABLE para a tabela times: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- CREATE TABLE times( id INTEGER UNSIGNED NOT NULL AUTO_INCREMENT, nome VARCHAR(45) NOT NULL, Vá em frente e insira alguns times nesta tabela. Vamos agora criar a tabela de jogadores: Comando DDL CREATE TABLE para a tabela jogadores: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- CREATE TABLE jogadores( id INTEGER UNSIGNED NOT NULL AUTO_INCREMENT, nome VARCHAR(45) NOT NULL, id_time INTEGER UNSIGNED, PRIMARY KEY(id), Note que o campo id_time da tabela jogador aceita NULL, ou seja, como é possível haver jogadores sem times, devemos ser capazes de cadastrar os jogadores e só mais adiante definir o time a qual ele pertencerá. Veja: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- INSERT INTO jogadores VALUES(NULL, 'JORGINHO', NULL); Vá em frente e cadastre alguns jogadores (sem relacioná-los com algum time). Finalizado alguns cadastros de jogadores e times, use a instrução UPDATE para relacionar alguns jogadores com seus respectivos times (deixe alguns jogadores sem time). Veja um exemplo: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- UPDATE jogadores SET id_time = 3 WHERE id = 2; E aqui vem a real utilidade da junção INNER JOIN. Nossa tarefa é listar o id, nome do jogador e nome do time a qual ele pertence. Mas, devemos incluir na listagem apenas os jogadores que estejam relacionados a algum time, ou seja, jogadores sem time não devem entrar na lista. Veja: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- SELECT j.id, j.nome, t.nome FROM jogadores j INNER JOIN times t ON j.id_time = t.id; Note que o conjunto de dados retornados inclui apenas os jogadores cujo valor do campo id_time tenha um valor correspondente na chave primária (id) da tabela times. |
![]() |
Veja mais Dicas e truques de MySQL |
Dicas e truques de outras linguagens |
GoLang - Como retornar o tamanho de uma string em Golang usando os métodos len() e RuneCountInString() |
E-Books em PDF |
||||
|
||||
|
||||
Linguagens Mais Populares |
||||
1º lugar: Java |