quarta-feira, 24 de agosto de 2011

[MYSQL] USANDO INNER JOIN

Hoje vou mostrar um exemplo de como usar o INNER JOIN no banco MySQL.

Para que você possa entender o uso do INNER JOIN, imagine que você tem um sistema de controle de salas,e no seu BD tem 3 tabelas:


1º Tabela (tb_sala) - Tabela com 3 campos (ID_SALA, SALA, DESCRICAO)
2ª Tabela (tb_departamento) - Tabela com 2 campos (ID_DEPARTAMENTO, DEPARTAMENTO)
3ª Tabela (tb_movimento) - Tabela com 5 campos (ID_MOVIMENTO, ID_SALA[FOREIGN KEY], ID_DEPARTAMENTO[FOREIGN KEY], EVENTO, SOLICITANTE)

Imaginemos então que você desenvolveu seu sistema e na hora de dar um SELECT na TB_MOVIMENTO o valor do campo ID_SALA aparece um numero e o valor do campo ID_DEPARTAMENTO também aparece um numero, ou seja, o usuario do ssietam não saberá que numero é aquela sala e nem que numero é aquele departamento, o que fazer então? Simples, usar o INNER JOIN no seu SELECT.

Veja na imagem abaixo um exemplo na prática do INNER JOIN sendo utilizado, perceba que no resultado ao invés de trazer o código ID_SALA e o código ID_DEPARTAMENTO, o resultado traz o NOME do DEPARTAMENTO e o NOME da SALA.

IMAGEM DO SELECT SEM INNER JOIN


IMAGEM DO SELECT COM INNER JOIN


Vou dar um breve explicação do SELECT:

//Linha onde informo os campos que quero que sejam mostrados no resultado da minha consulta
SELECT ID_MOVIMENTO, SALA, DEPARTAMENTO, SOLICITANTE, EVENTO

//Linha onde informo a tabela que receberá os campos que estou unindo a ela (ou seja, onde estou fazendo o INNER JOIN)
FROM TB_MOVIMENTO

//Linha onde informo qual campo da tabela movimento deverá ser comparado com o campo da tabela departamento ou seja, se o valor do id_departamento da tabela movimento for igual ao id_departamento da tabela departamento é esse registro que quero juntar na tabela movimento
INNER JOIN TB_DEPARTAMENTO ON TB_MOVIMENTO.id_departamento=TB_DEPARTAMENTO.id_departamento

//Faço a mesma verificação que é feita acimá só que desta vez na tabela sala
INNER JOIN TB_SALA ON TB_MOVIMENTO.id_sala=TB_SALA.id_sala

//Linha de Where normal, onde informo qual registro estou procurando
WHERE TB_MOVIMENTO.id_departamento=1

Espero poder ter ajudado, até a próxima!!!

Nenhum comentário:

Postar um comentário