Inner Join

15
Inner Join Professor Aécio

description

Como realizar comando de Inner Join no banco de dados SQL

Transcript of Inner Join

Page 1: Inner Join

Inner Join

Professor Aécio

Page 2: Inner Join

Exemplo de tabelas que queremos listar juntas...

• Temos a tabela de garotas

• Temos a tabela de brinquedos...

Page 3: Inner Join

Mas o que queremos é unir as duas em uma consulta única

• Como no exemplo abaixo...

Page 4: Inner Join

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.

Page 5: Inner Join

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.

Page 6: Inner Join

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 );

Page 7: Inner Join

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);

Page 8: Inner Join

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);

Page 9: Inner Join

Listando a relação de garotas e seus brinquedos

SELECT garota.garota,brinquedo.brinquedoFROM garotaINNER JOIN brinquedoON garota.id_brinquedo = brinquedo.id;

Page 10: Inner Join

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));

Page 11: Inner Join

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);

Page 12: Inner Join

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;

Page 13: Inner Join

Por partes vamos entender os comandos...

SELECT garota.garota, brinquedo.brinquedoFROM garota INNER JOIN

Page 14: 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;

Page 15: Inner Join

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;