inner join
DESCRIPTION
Como realizar comando de Inner Join no banco de dados SQLTRANSCRIPT
Inner Join
Professor Aécio
Exemplo de tabelas que queremos listar juntas...
• Temos a tabela de garotas
• Temos a tabela de brinquedos...
Mas o que queremos é unir as duas em uma consulta única
• Como no exemplo abaixo...
Antes algumas considerações:
• A tabela da esquerda é uma tabela do tipo:• Um para muitos, ou seja uma garota pode ter
vários brinquedos. Vamos padronizar que esta tabela é a tabela da ESQUERDA.
Antes algumas considerações
• A tabela da DIREITA que é a tabela de brinquedos é uma tabela do tipo um para um, onde cada brinquedo pertence a somente uma garota.
Comandos sql para criar a base
CREATE DATABASE inner_join;USE inner_join;
Comandos para criar a tabela de brinquedo :CREATE TABLE brinquedo( id BIGINT NOT NULL PRIMARY KEY AUTO_INCREMENT, brinquedo VARCHAR(255) NOT NULL );
Comandos para criar a tabela garota
CREATE TABLE garota( id BIGINT NOT NULL PRIMARY KEY AUTO_INCREMENT, garota VARCHAR(255) NOT NULL, id_brinquedo BIGINT NOT NULL);
Populando as tabelas
INSERT INTO brinquedo (brinquedo) VALUES ('bambole');INSERT INTO brinquedo (brinquedo) VALUES ('planador');INSERT INTO brinquedo (brinquedo) VALUES ('soldados');INSERT INTO brinquedo (brinquedo) VALUES ('gaita');INSERT INTO brinquedo (brinquedo) VALUES ('figurinhas');INSERT INTO brinquedo (brinquedo) VALUES ('quebra-cabeca');
INSERT INTO garota(garota,id_brinquedo) VALUES ('Jane',3);INSERT INTO garota(garota,id_brinquedo) VALUES ('Sally',4);INSERT INTO garota(garota,id_brinquedo) VALUES ('Cindy',3);
Listando a relação de garotas e seus brinquedos
SELECT garota.garota,brinquedo.brinquedoFROM garotaINNER JOIN brinquedoON garota.id_brinquedo = brinquedo.id;
Podemos fazer um exemplo mais complexo em que uma garota pode ter mais de um brinquedo
CREATE DATABASE inner_join;USE inner_join;CREATE TABLE brinquedo( id BIGINT NOT NULL PRIMARY KEY AUTO_INCREMENT, brinquedo VARCHAR(255) NOT NULL );CREATE TABLE garota( id BIGINT NOT NULL PRIMARY KEY AUTO_INCREMENT, garota VARCHAR(255) NOT NULL);CREATE TABLE garota_brinquedo( id BIGINT NOT NULL PRIMARY KEY AUTO_INCREMENT, id_garota BIGINT NOT NULL, id_brinquedo BIGINT NOT NULL, CONSTRAINT fk_garota_brinquedo_garota FOREIGN KEY id_garota REFERENCES garota(id), CONSTRAINT fk_garota_brinquedo_brinquedo FOREIGN KEY id_brinquedo REFERENCES brinquedo(id));
Populando...INSERT INTO garota(garota) VALUES ('Jane');INSERT INTO garota(garota) VALUES ('Sally');INSERT INTO garota(garota) VALUES ('Cindy');
INSERT INTO brinquedo (brinquedo) VALUES ('bambole');INSERT INTO brinquedo (brinquedo) VALUES ('planador');INSERT INTO brinquedo (brinquedo) VALUES ('soldados');INSERT INTO brinquedo (brinquedo) VALUES ('gaita');INSERT INTO brinquedo (brinquedo) VALUES ('figurinhas');INSERT INTO brinquedo (brinquedo) VALUES ('quebra-cabeca');
INSERT INTO garota_brinquedo (id_garota,id_brinquedo) VALUES (1,1);INSERT INTO garota_brinquedo (id_garota,id_brinquedo) VALUES (1,2);
Consultando...
SELECT garota.garota, brinquedo.brinquedoFROM garota INNER JOIN
(brinquedo INNER JOIN garota_brinquedo ON brinquedo.id = garota_brinquedo.id_brinquedo)
ON garota.id = garota_brinquedo.id_garota;
Por partes vamos entender os comandos...
SELECT garota.garota, brinquedo.brinquedoFROM garota INNER JOIN
Aqui eu faço a ligação entre a tabela garota e a tabela garota_brinquedo
SELECT garota.garota, brinquedo.brinquedoFROM garota INNER JOIN
ON garota.id = garota_brinquedo.id_garota;
Agora eu preciso ligar a tabela brinquedo a tabela garota_brinquedo
SELECT garota.garota, brinquedo.brinquedoFROM garota INNER JOIN
(brinquedo INNER JOIN garota_brinquedo ON brinquedo.id = garota_brinquedo.id_brinquedo)ON garota.id = garota_brinquedo.id_garota;