Combinar informações de várias tabelas MySQL com Cadastre

Você pode usar um JUNTE-SE SELECIONAR consultar para combinar informações de mais de uma tabela MySQL. Com JOIN, as tabelas são combinados lado a lado, e as informações são recuperadas de ambas as tabelas.

As tabelas são combinados, combinando dados de uma coluna - a coluna que eles têm em comum. A tabela de resultados combinados produzido por uma junção contém todas as colunas de ambas as tabelas. Por exemplo, se tabela 1 tem duas colunas (memberID e altura), E mesa 2 tem duas colunas (memberID e peso), Uma junção resulta em uma mesa com quatro colunas: memberID (por tabela 1), altura, memberID (por mesa 2), E peso.

Os dois tipos mais comuns de junta são uma junção interna e um junção externa. A diferença entre um interior e exterior se juntar está no número de linhas incluídas na tabela de resultados.

  • Junção interna: A tabela de resultados produzido por uma junção interna contém apenas as linhas que existiam em ambas as tabelas.

  • Junção externa: A tabela combinada produzida por uma associação externa contém todas as linhas que existiam em uma tabela com espaços em branco nas colunas para as linhas que não existiam na segunda tabela.

Por exemplo, se tabela 1 contém uma linha para Joe e uma linha para Sally, e mesa 2 contém apenas uma linha para Sally, uma junção interna conteria apenas uma linha: a linha para Sally. No entanto, uma associação externa deverá conter duas linhas - uma linha para Joe e uma linha para Sally - embora a linha de Joe teria um campo em branco para peso.

A tabela de resultados para a associação externa contém todas as linhas de uma tabela. Se qualquer uma das linhas para que a tabela não existem na segunda tabela, as colunas para a segunda tabela estão vazios. Claramente, o conteúdo da tabela de resultados são determinados pelo qual tabela contribui todas as suas linhas, exigindo a segunda tabela para combiná-lo.

Dois tipos de associações externas controlo qual tabela define as linhas e que deve corresponder: a LEFT JOIN e um RIGHT JOIN.

Você usa diferentes SELECIONAR consultas para uma junção interna e os dois tipos de associações externas. A consulta a seguir é uma associação interna:

columnnamelist SELECT FROM table1, table2WHERE Table1.col2 = table2.col2

E essas consultas são junta exterior:

columnnamelist SELECT FROM table1 LEFT JOIN table2ON table1.col1 = table2.col2SELECT columnnamelist da direita table1 Cadastre table2ON table1.col1 = table2.col2

Em todos os três consultas, tabela 1 e mesa 2 são as tabelas a serem unidas. Você pode participar de mais de duas tabelas. Em ambas as consultas, col1 e col2 arethe nomes das colunas que estão sendo combinados para unir as tabelas. As tabelas são combinados com base nos dados dessas colunas. Estas duas colunas podem ter o mesmo nome ou nomes diferentes, mas eles devem conter o mesmo tipo de dados.

Como um exemplo de interior e exterior junta, considere um catálogo de roupas com duas mesas. Uma tabela é Produto, com as duas colunas Nome e Digitar segurando os seguintes dados:

Nome TypeT da camisa do shirtdress ShirtJeans Pants

A segunda tabela é Cor, com duas colunas Nome e Cor segurando os seguintes dados:

Nome ColorT-shirt whiteT-shirt redLoaferblack

Você precisa fazer uma pergunta que requer informações de ambas as tabelas. Se você fizer uma junção interna com a seguinte consulta:

* SELECT FROM produto, a cor ONDE Product.Name = Color.Name

você obter a tabela de resultados seguintes com quatro colunas: Nome (por Produto), Digitar, Nome (por Cor), E Cor.

Nome TypeName ColorT-shirt shirt T-shirt whiteT-shirt shirt T-shirt vermelho

Observe que somente camiseta aparece na tabela de resultados - porque só camiseta foi em ambas as tabelas originais, antes da junção. Por outro lado, suponha que você faz uma junção externa esquerda com a seguinte consulta:

SELECT * DA ESQUERDA DE PRODUTOS PARTICIPAR Coloron produto. Name = Color. Nome

Você começa a seguinte tabela de resultados, com os mesmos quatro colunas - Nome (por Produto), Digitar, Nome (por Cor), E Cor - mas com diferentes linhas:

Nome TypeName ColorT-shirt shirt T-shirt whiteT-shirt shirt T-shirt camisa redDress shirt Calças Jeans 

Esta tabela tem quatro linhas. Ele tem as mesmas primeiras duas filas como a junção interna, mas tem duas linhas adicionais - linhas que estão no Produto tabela do lado esquerdo, mas não no Cor mesa. Repare que as colunas da tabela Cor estão em branco para as duas últimas linhas.

E, no terceiro lado, suponha que você faça uma junção externa direita com a seguinte consulta:

* SELECT FROM produto certo Cadastre Coloron Product.petName = Color. Nome

Você começa a seguinte tabela de resultados, com os mesmos quatro colunas, mas ainda com linhas diferentes:

petname petType petname petColorT-shirt shirt T-shirt whiteT-shirt shirt T-shirt vermelho mocassins preto

Note-se que estes resultados contêm todas as linhas para o Cor tabela à direita, mas não para o Produto mesa. Observe os espaços em branco nas colunas para a Produto tabela, que não tem uma linha de sapatos de viagem.

Às vezes é útil para descobrir quais linhas de uma tabela não tem registos correspondentes na outra tabela. Por exemplo, suponha que você quer saber que nunca tenha conectado para única seção seus membros. Suponha que você tenha uma tabela com o nome de login do membro (Membro) E outra tabela com as datas de login (Entrar).

Você pode fazer esta pergunta, selecionando a partir das duas tabelas. Você pode descobrir quais os nomes de login não tem uma entrada no Entrar tabela com a seguinte consulta:

loginName SELECT FROM Membro LEFT JOIN LoginON Member.loginName = Login.loginNameWHERE Login.loginName IS NULL

Esta consulta dá-lhe uma lista de todos os nomes de login no Membro tabela que não estão no Entrar mesa.

menu