Você está em: Principal › Artigos › SQL Server 2005 › Capítulo 10 : 22
Lição 177 - Capítulo 10 - Pesquisando Dados em Múltiplas Tabelas
É comum a situação em que, para construir uma View (consulta), temos que acessar dados de duas ou mais tabelas. Por exemplo, se quisermos uma listagem com o nome do funcionário, o número do pedido, a data do pedido e o país de destino, teremos que acessar dados das seguintes tabelas do Banco de Dados NwindAccess.
Para que possamos acessar dados de duas ou mais tabelas, em uma consulta, utilizamos uma cláusula JOIN. Um JOIN é uma operação que nos permite acessar dados de duas ou mais tabelas. O JOIN é efetuado com base em uma coluna que seja comum a duas ou mais tabelas. Por exemplo, se fizermos um Join entre as tabelas Pedidos e Detalhes do Pedido, o JOIN será efetuado através do campo NúmeroDoPedido, que é o campo que relaciona estas duas tabelas. Na tabela Detalhes do Pedido, o campo NúmeroDoPedido é utilizado para indicar a qual pedido pertence cada um dos itens.
Vamos a um exemplo de utilização de uso da cláusula JOIN.
Exemplo: Escrever um comando SQL que retorne os campos indicados na Tabela 10.3.
NúmeroDoPedido Pedidos
DataDoPedido Pedidos
CódigoDoProduto Detalhes do Pedido
PreçoUnitário Detalhes do Pedido
Quantidade Detalhes do Pedido
Tabela 10.3 Campos – Tabelas.
Esta listagem irá retornar uma linha para cada item de cada pedido, com os campos indicados na Tabela 10.3. Por exemplo, se um campo tiver cinco itens, serão retornadas cinco linhas, com o mesmo valor para o campo NúmeroDoPedido e DataDoPedido (que são as informações do cabeçalho do pedido), e diferentes valores para os demais campos (que são as informações dos itens do pedido). Para construir a listagem solicitada, utilizamos o seguinte comando:
SELECT [Pedidos].[NúmeroDoPedido], [Pedidos].[DataDopedido], [Detalhes do Pedido].[CódigoDoproduto],
[Detalhes do Pedido].[PreçoUnitário],[Detalhes do Pedido].[Quantidade]
FROM [Detalhes do Pedido]
[Detalhes do Pedido].[NúmeroDoPedido] = [Pedidos].[NúmeroDoPedido]
Observe que estamos utilizando a sintaxe [NomeDaTabela].[NomeDoCampo].
O resultado parcial, da execução deste comando é indicado na listagem a seguir:
10248 4/7/1996 11 14 12
10248 4/7/1996 42 9,8 10
10248 4/7/1996 72 34,8 5
10249 5/7/1996 14 18,6 9
10249 5/7/1996 51 42,4 40
10250 8/7/1996 41 7,7 10
10250 8/7/1996 51 42,4 35
10250 8/7/1996 65 16,8 15
Observe que, para cada pedido, aparecem tantas linhas quantos forem os itens do pedido.
Vamos analisar a sintaxe básica do Join.
ON [Tabela1].[CampoComun]= [Tabela2].[CampoComun]
Além do Join ligando as duas tabelas, devemos especificar qual o campo em comum nas duas tabelas. Isto é feito pela cláusula ON.