Desenvolvedor e Analista de Sistemas | IFPA

domingo, 19 de outubro de 2014

Relacionamento de Tabelas INNER JOIN - MySQL

com 0 Comentário
O MySQL INNER JOIN cláusula corresponde linhas em uma tabela com linhas de outras tabelas e permite consultar as linhas que contêm colunas de ambas as tabelas.

O MySQL cláusula INNER JOIN uma parte opcional da instrução SELECT . Parece imediatamente após o DE cláusula.

Antes de usar o MySQL cláusula INNER JOIN, você tem que especificar os seguintes critérios:
  • Primeiro, você tem que especificar a tabela principal que aparece na DE cláusula.
  • Em segundo lugar, você precisa especificar a tabela que você quer se juntar com a mesa principal, que aparece no INNER JOIN cláusula. Teoricamente, você pode participar de uma mesa com muitas mesas. No entanto, para melhor desempenho de consulta, você deve limitar o número de mesas para participar.
  • Em terceiro lugar, você precisa especificar a junção condição ou predicado. A juntar a condiçãoaparece após a palavra-chave ON da INNER JOIN cláusula. A juntar-se a condição é a regra para linhas correspondentes entre a mesa principal e as outras mesas.

A sintaxe da cláusula MySQL INNER JOIN é a seguinte:

1
2
3
4
5
6
SELECT column_list
FROM t1
INNER JOIN t2 ON join_condition1
INNER JOIN t3 ON join_condition2
...
WHERE where_conditions;

Vamos simplificar a sintaxe acima, assumindo que estamos a unir duas tabelas T1 e T2 usando oINNER JOIN cláusula.

Para cada registro no T1 tabela, o MySQL INNER JOIN cláusula compara com cada registro do T2 mesa para verificar se ambos satisfazer a juntar condição . Quando a juntar-se a condição é correspondida, ele irá retornar esse registro que combinam colunas em um ou ambos os T1 e T2tabelas.

Observe que os registros em ambos T1 e T2 tabelas têm de ser adaptadas com base na junçãocondição . Se nenhuma correspondência encontrada, a consulta retornará um conjunto vazio.

A lógica é aplicada se juntar mais de 2 mesas.

O diagrama de Venn ilustra como o MySQL INNER JOIN obras cláusula.


Evite erro coluna ambíguo em MySQL INNER JOIN

Se você juntar várias tabelas que possuem o mesmo nome da coluna, você tem que usar a tabela de qualificação para se referir a essa coluna no SELECIONAR cláusula para evitar erro de coluna ambíguo.Por exemplo, se ambos T1 e T2 tabelas têm a mesma coluna chamada C ; no SELECIONARcláusula, você tem que se referir a C coluna usando a tabela de qualificação como T1.C ou t2.c .

Para economizar tempo de digitação tabela eliminatórias, você pode usar aliases de tabela na consulta.Por exemplo, você pode dar o verylongtablename mesa um alias T e se referem a suas colunas usando t.column vez de verylongtablename.column .

Exemplos de como usar MySQL cláusula INNER JOIN

Vamos dar uma olhada em duas tabelas: produtos e productlines tabelas no banco de dados da amostra.

Agora, se você quiser obter
  • O código do produto e nome do produto do produto mesa.
  • O texto de descrição das linhas de produtos da productlines mesa . 

Você precisa selecionar os dados de ambas as tabelas e linhas jogo comparando o productlinecoluna do produto tabela com o productline coluna da productlines tabela como a seguinte consulta:

1
2
3
4
5
SELECT productCode,
       productName,
       textDescription
FROM products T1
INNER JOIN productlines T2 ON T1.productline = T2.productline;

MySQL INNER JOIN - Produtos de Dados Exemplo
MySQL INNER JOIN com a cláusula GROUP BY

Podemos obter o número do pedido, status de pedidos e vendas totais das ordens e OrderDetailstabelas usando o INNER JOIN com a cláusula GROUP BY da seguinte forma:

1
2
3
4
5
6
SELECT T1.orderNumber,
       status,
       SUM(quantityOrdered * priceEach) total
FROM orders AS T1
INNER JOIN orderdetails AS T2 ON T1.orderNumber = T2.orderNumber
GROUP BY orderNumber

MySQL INNER JOIN com GROUP BY
Neste tutorial, você aprendeu como usar MySQL INNER JOIN para consultar dados de várias tabelas.Você também aprendeu a usar a tabela qualificador para evitar erro de coluna ambíguo em MySQL INNER cláusula JOIN.

+1

0 comentários :

Postar um comentário

Total de visualizações