Вы находитесь на странице: 1из 15

Inner Join

Professor Acio

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
consideraes:
A tabela da esquerda uma tabela
do tipo:
Um para muitos, ou seja uma
garota pode ter vrios brinquedos.
Vamos padronizar que esta tabela
a tabela da ESQUERDA.

Antes algumas
consideraes
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
INSERT
INSERT
INSERT
INSERT
INSERT

INTO
INTO
INTO
INTO
INTO
INTO

brinquedo
brinquedo
brinquedo
brinquedo
brinquedo
brinquedo

(brinquedo)
(brinquedo)
(brinquedo)
(brinquedo)
(brinquedo)
(brinquedo)

VALUES
VALUES
VALUES
VALUES
VALUES
VALUES

('bambole');
('planador');
('soldados');
('gaita');
('figurinhas');
('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 relao de garotas e seus


brinquedos
SELECT
garota.garota,brinquedo.brinquedo
FROM garota
INNER JOIN brinquedo
ON 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
INSERT
INSERT
INSERT
INSERT
INSERT

INTO
INTO
INTO
INTO
INTO
INTO

brinquedo
brinquedo
brinquedo
brinquedo
brinquedo
brinquedo

(brinquedo)
(brinquedo)
(brinquedo)
(brinquedo)
(brinquedo)
(brinquedo)

VALUES
VALUES
VALUES
VALUES
VALUES
VALUES

('bambole');
('planador');
('soldados');
('gaita');
('figurinhas');
('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.brinquedo
FROM 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.brinquedo
FROM garota INNER JOIN

Aqui eu fao a ligao entre a tabela


garota e a tabela garota_brinquedo
SELECT garota.garota, brinquedo.brinquedo
FROM 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.brinquedo
FROM garota INNER JOIN

(brinquedo INNER JOIN garota_brinquedo ON


brinquedo.id = garota_brinquedo.id_brinquedo)
ON garota.id = garota_brinquedo.id_garota;

Вам также может понравиться