Você está aqui: MySQL ::: Dicas & Truques ::: Joins (Junções) |
Usando a junção RIGHT JOIN (ou RIGHT OUTER JOIN) para agrupar dados de duas ou mais tabelas no MySQLQuantidade de visualizações: 7029 vezes |
A junção RIGHT JOIN (ou RIGHT OUTER JOIN) do MySQL é usada quando queremos agrupar dados de duas ou mais tabelas e exibir todos os registros da tabela à direita, mesmo que não haja correspondências (match) de registros na tabela à esquerda. 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: CREATE TABLE times( id INTEGER UNSIGNED NOT NULL AUTO_INCREMENT, nome VARCHAR(45) NOT NULL, PRIMARY KEY(id) ) ENGINE = InnoDB; Vá em frente e insira alguns times nesta tabela. Vamos agora criar a tabela de jogadores: Comando DDL CREATE TABLE para a tabela jogadores: CREATE TABLE jogadores( id INTEGER UNSIGNED NOT NULL AUTO_INCREMENT, nome VARCHAR(45) NOT NULL, id_time INTEGER UNSIGNED, PRIMARY KEY(id), CONSTRAINT fk_jogadores_times FOREIGN KEY fk_jogadores_times(id_time) REFERENCES times(id) ON DELETE RESTRICT ON UPDATE RESTRICT ) ENGINE = InnoDB; 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: 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: UPDATE jogadores SET id_time = 3 WHERE id = 2; E aqui já podemos ver um exemplo da junção RIGHT JOIN. Nossa tarefa é listar o id, nome do jogador e nome do time a qual ele pertence. Mas, queremos também incluir na listagem os times que ainda não possuem jogadores (não há valor no campo id_time da tabela jogadores que corresponda ao valor do campo id da tabela times). Veja: SELECT j.id, j.nome, t.nome FROM jogadores j RIGHT JOIN times t ON j.id_time = t.id; id jogador time ? ? PALMEIRAS ? ? GOIÁS 2 JORGINHO CRUZEIRO ? ? FLAMENGO ? ? VILA NOVA Note que o conjunto de dados retornados inclui todos os times, incluindo aqueles que não possuem nenhum jogador. |
![]() |
Veja mais Dicas e truques de MySQL |
Dicas e truques de outras linguagens |
Delphi - Como calcular o cateto oposto dadas as medidas da hipotenusa e do cateto adjascente em Delphi |
E-Books em PDF |
||||
|
||||
|
||||
Linguagens Mais Populares |
||||
1º lugar: Java |