X

Mysql – NATURAL JOIN – Joins mais fáceis

Esta dica é para facilitar algumas consultas no banco de dados. O Mysql tem suporte ao NATURAL Join o que facilita muito as querys.

Esta dica é para facilitar algumas consultas no banco de dados. O Mysql tem suporte ao NATURAL Join o que facilita muito as querys.

Vamos supor que temos 2 tabelas relacionadas, clientes e telefones. O cliente tem a seguinte estrutura:

CREATE TABLE `clients` (
  `idClients` int(11) NOT NULL AUTO_INCREMENT,
  `name` char(150) DEFAULT NULL,
  PRIMARY KEY (`idClients`)
)
insert  into `clients`(`name`) values ('Turbosite');

 

Note que no final inserimos um usuário para nosso teste.

A tabela de telefones ficaria desta forma:

CREATE TABLE `phones` (
  `idPhones` int(11) NOT NULL AUTO_INCREMENT,
  `number` char(20) NOT NULL,
  `idClients` int(11) NOT NULL,
  PRIMARY KEY (`idPhones`,`idClients`),
  KEY `idClients` (`idClients`),
  CONSTRAINT `phones_ibfk_1` FOREIGN KEY (`idClients`) REFERENCES `clients` (`idClients`)
)
insert  into `phones`(`number`,`idClients`) values ('(31) 4003-2322',1);
insert  into `phones`(`number`,`idClients`) values ('(31) 3261-2168',1);

 

Sem utilizar o NATURAL Join, a consulta para pegar os telefones de um cliente seria da seguinte forma:

SELECT C.`name`,P.`number` FROM clients C
INNER JOIN phones P
ON C.`idClients` = P.`idClients`
WHERE C.`idClients` = 1

 

Resultado seria:

name number
Turbosite (31) 4003-2322
Turbosite (31) 3261-2168

 

Agora com o Natural JOIN, a consulta seria:

SELECT * FROM clients
NATURAL JOIN phones
WHERE idClients = 1

O resultado da pesquisa:

idClients name idPhones number
1 Turbosite 5 (31) 4003-2322
1 Turbosite 6 (31) 3261-2168

 

O Natural JOIN é inteligente o suficiente para não acusar erro por ambiguidade de coluna, como uma faz referência a outra, ele não lista em duplicidade as colunas de referência.
A consulta fica mais limpa, mais fácil de entender e de dar manutenção, caso esta tabela fizesse referência a uma 3ª tabela, era só adicionar uma linha ficando desta forma:

SELECT * FROM clients
NATURAL JOIN phones
NATURAL JOIN tabela3
WHERE idClients = 1

 

Vamos deixar aqui um link com uma apresentação de JOINS do MYSQL. É interessante ver e aprender para tomar a melhor decisão no desenvolvimento de seus projetos.

http://w3resource.com/gallery/mysql-joins-slides-presentation


This post was last modified on 4 de maio de 2018 11:12

Turbosite:

This website uses cookies.