Opções de Junções de Dados
Junções de dados e nulidade de registro
Às vezes você terá uma tabela onde um campo está faltando alguns registros. Aqui está um exemplo de uma lista de funcionários em que alguns registros não especificam o departamento ao qual o funcionário pertence:
SELECT Employees.EmployeeNumber AS [Employee #], Employees.FirstName, Employees.LastName, Employees.DepartmentCode AS Department FROM Employees;
Isso produziria:
Se você criar uma consulta de junção interna de duas tabelas que tenham um relacionamento e alguns registros da tabela filho estiverem faltando alguns valores na coluna de chave estrangeira, a consulta produzirá apenas os registros que têm um valor. Aqui está um exemplo:
SELECT Employees.EmployeeNumber AS [Employee #], Employees.FirstName, Employees.LastName, Departments.DepartmentName AS Department FROM Departments INNER JOIN Employees ON Departments.DepartmentCode = Employees.DepartmentCode;
Isso produziria:
Observe que a consulta produz menos registros. Acontece que os mecanismos de banco de dados não gostam de registros nulos, especialmente em campos compartilhados, campos que estão envolvidos em relacionamentos. Para certificar-se de que todos os registros de uma tabela filha sejam produzidos por uma consulta, produza um valor padrão para registros cujos valores estão ausentes. Se o relacionamento estiver usando um inteiro simples, crie um registro com o valor 0. Se o relacionamento estiver usando uma string, você poderá criar um registro com um valor 'N/A'. Se os registros forem processados por um computador, você poderá criar um registro com um valor genérico/aleatório como 00000 ou algo parecido.
Aprendizagem prática:como lidar com junções de dados e nulidade de registros
- Iniciar o Microsoft Access
- A partir dos recursos que acompanham essas lições, abra o banco de dados Altair Realtors3
- Na faixa de opções, clique em Criar e clique em Design de consulta
- Na caixa de diálogo Mostrar tabela, clique duas vezes em Propriedades e clique em Fechar
- Na lista Propriedades, clique duas vezes em PropertyNumber, City e State
- Mude a consulta para a visualização de folha de dados:
- Observe o número de registros:48.
Alterne a consulta para a Visualização de design - Clique com o botão direito do mouse em uma área vazia na parte superior da janela e clique em Mostrar tabela
- Na caixa de diálogo Mostrar tabela, clique duas vezes em PropertyTypes e clique em Fechar
- Na lista PropertyTypes, clique duas vezes em PropertyType
- Mude a consulta para a visualização de folha de dados
- Observe o número de registros desta vez:44.
Exiba a Visualização SQL da consulta e altere seu código da seguinte forma:SELECT Properties.PropertyNumber, Properties.City, Properties.State, Conditions.Condition FROM Properties INNER JOIN Conditions ON Properties.Condition = Conditions.Condition;
- Mude a consulta para a visualização de folha de dados
- Observe o número de registros:38.
Feche a consulta sem salvá-la - No painel de navegação, clique duas vezes no formulário PropertyTypes
- Crie um novo registro da seguinte forma:
Tipo de propriedade Descrição Desconhecido O tipo de propriedade não está disponível ou não está claro. Ilustrações - Fechar a tabela PropertyTypes
- No Painel de Navegação, clique duas vezes no formulário Condições
- Crie um novo registro da seguinte forma:
Tipo de propriedade Descrição Desconhecido A condição ou aparência atual (interior e/ou exterior) do imóvel não foi verificada, não foi avaliada ou não é claramente conhecida. - Fechar a tabela Condições
- No painel de navegação, clique com o botão direito do mouse na tabela Propriedades e clique em Visualização de design
- Na parte superior da janela, clique em PropertyType
- Na parte inferior, clique em Valor padrão e digite Desconhecido
- Na parte superior da janela, clique em Condição
- Na parte inferior, clique em Valor padrão e digite Desconhecido
- Salve a tabela e alterne-a para a Visualização de folha de dados
- Na coluna PropertyType, para cada célula vazia, selecione Desconhecido
- Na coluna Condição, para cada célula vazia, selecione Desconhecido
- Observe que há um valor padrão para as colunas PropertyType e Condition
- Ao definir apenas os valores indicados, crie novos registros da seguinte forma:
Propriedade # Tipo de propriedade Cidade Estado CEP Quartos Banheiros Porão Concluído Garagem coberta Condição Valor de mercado 476005 Unifamiliar Hanover PA 17331 3 2,50 Verificado 425790 152466 Martinsburg WV 1 1,00 135670 427048 Condomínio Alexandria VA 3 2,00 Precisa de reparos 622845 297427 Matinsburg Excelente 729336 Alexandria VA 3 2,50 Precisa de reparos 750000 300618 Harrisburg PA 17109 5 3,50 Verificado Verificado Boa Forma 515885
- Fechar a tabela
- Na faixa de opções, clique em Criar e clique em Design de consulta
- Na caixa de diálogo Mostrar tabela, clique duas vezes em Propriedades e clique em Fechar
- Na lista Propriedades, clique duas vezes em PropertyNumber, City e State
- Mude a consulta para a visualização de folha de dados
- Observe o número de registros:51.
Alterne a consulta para a Visualização de design - Clique com o botão direito do mouse em uma área vazia na parte superior da janela e clique em Mostrar tabela
- Na caixa de diálogo Mostrar tabela, clique duas vezes em PropertyTypes e clique em Fechar
- Na lista PropertyTypes, arraste PropertyType e solte-o em Cidade na parte inferior
- Na lista Propriedades, clique duas vezes em Quartos e banheiros
- Mude a consulta para a visualização de folha de dados
- Observe o número de registros desta vez:51.
Feche a consulta sem salvá-la - Abra o banco de dados Lambda Square Apartments1 criado e usado anteriormente
- Na faixa de opções, clique em Criar e clique em Design de consulta
- Na caixa de diálogo Mostrar tabela, clique duas vezes em Pagamentos e clique em Fechar
- Na lista Pagamentos, clique duas vezes em ReceiptNumber, PaymentDate, ProcessedBy, RegistrationNumber e PaymentAmount
- Mude a consulta para a visualização de folha de dados
- Observe o número de registros:63.
Alterne a consulta para a Visualização de design - Clique com o botão direito do mouse em uma área vazia da janela e clique em Mostrar tabela...
- Na caixa de diálogo Mostrar tabela, clique duas vezes em Funcionários e clique em Fechar
- Arraste EmployeeNumber e solte em ProcessedBy
- Na parte inferior da janela, substitua ProcessedBy por
Employee: [EmployeeNumber] & " - " & [EmployeeName] & " (" & [Title] & ")"
- Mude a consulta para a visualização de folha de dados
- Observe o número de registros:46.
Feche a consulta sem salvá-la - No Painel de Navegação, clique duas vezes na tabela Employeees e crie um novo registro da seguinte forma (isso é para transações feitas no banco, como um inquilino que deposita o dinheiro do aluguel diretamente no banco):
NúmeroFuncionário Nome Sobrenome Título 00000 Processamento Automático de Transação Eletrônica - Fechar a tabela Funcionários
- No painel de navegação, clique com o botão direito do mouse na tabela Pagamentos e clique em Visualização de design
- Na parte superior da janela, clique em Processado por
- Na parte inferior, clique em Valor padrão e digite "00000"
- Salvar e fechar a tabela
- Abra a tabela Pagamentos
- Na coluna ProcessedBy, em cada célula vazia, digite 00000
- Fechar a tabela Pagamentos
- Na faixa de opções, clique em Criar e clique em Design de consulta
- Na caixa de diálogo Mostrar tabela, clique duas vezes em Pagamentos e funcionários
- Clique em Fechar
- Arraste EmployeeNumber e solte em ProcessedBy
- Na lista Pagamentos, clique duas vezes em ReceiptNumber e PaymentDate
- Pressione Tab e digite
Employee: [EmployeeNumber] & " - " & [EmployeeName] & " (" & [Title] & ")"
- Na lista Pagamentos, clique duas vezes em RegistrationNumber e PaymentAmount
- Mude a consulta para a visualização de folha de dados
- Observe o número de registros:63.
Feche a consulta sem salvá-la
Unindo mais de duas tabelas
Até agora, nossas instruções de junção envolveram apenas duas tabelas. Na verdade, você pode usar mais tabelas do que isso. A fórmula básica para unir três tabelas é:
SELECT field-name(s) FROM first-table first-join-type second-table ON condition1 second-join-type third-table ON condition2
Você inicia a expressão juntando a primeira à segunda tabela, o que significa que ambas as tabelas devem compartilhar uma coluna em um tipo de relacionamento de chave primária-chave estrangeira. Da mesma forma, você pode criar a segunda junção. Obviamente, a segunda e a terceira tabelas devem ter uma coluna comum. Na maioria dos casos, deve haver uma coluna que todas as três tabelas compartilhem. Na maioria das vezes, o relacionamento começa com uma coluna de chave primária da tabela pai. Essa coluna é então representada como uma chave estrangeira nas outras duas tabelas.
Aprendizagem prática:juntando mais de duas tabelas
- Na faixa de opções, clique em Criar e clique em Design de formulário
- Na folha de propriedades, clique na guia Tudo.
Clique em Origem do registro e clique no botão de reticências - Na tabela Mostrar, clique duas vezes em Funcionários, registros e apartamentos
- Clique em Fechar
- Arraste EmployeeNumber da lista Employees e solte-o em ProcessedBy na lista Registrations
- Arraste ApartmentCode da lista de apartamentos e solte-o no PropNbr na lista de inscrições
- Na lista Registros, clique duas vezes em RegistrationID e RegistrationDate
- Pressione Tab e digite
Employee: [EmployeeNumber] & " - " & [EmployeeName] & " (" & [Title] & ")"
- Na lista Registros, clique duas vezes em FirstName, LastName, MaritalStatus e NumberOfChildren
- Pressione Tab e digite:
Apartment: "Apart # " & [UnitNumber] & ", " & [Bedrooms] & " bedroom(s), " & [Bathrooms] & " bathroom(s), Rate: " & [MonthlyRate] & "/month"
- Exiba a visualização SQL da consulta:
SELECT Registrations.RegistrationID AS [Regist #], Registrations.RegistrationDate AS [Regist Date], [EmployeeNumber] & " - " & [EmployeeName] & " (" & [Title] & ")" AS Employee, Registrations.FirstName, Registrations.LastName, Registrations.MaritalSituation AS Status, Registrations.NumberOfChildren AS Children, "Apart # " & [UnitNumber] & ", " & [Bedrooms] & " bedroom(s), " & [Bathrooms] & " bathroom(s), Rate: " & [MonthlyRate] & "/month" AS Apartment FROM Apartments INNER JOIN (Employees INNER JOIN Registrations ON Employees.EmployeeNumber = Registrations.ProcessedBy) ON Apartments.ApartmentCode = Registrations.PropNbr;
- Feche o Criador de consultas
- Quando perguntado se você deseja salvar as alterações, clique em Sim
- Salve o formulário como Alocações de aluguel
- Clique duas vezes no botão na interseção das réguas
- Na folha de propriedades, altere as seguintes características:
Legenda:Lambda Square Apartments - Alocação de aluguel
Valor padrão:Formulário contínuo
Central automática:Sim
Botões de navegação:Não - Na faixa de opções, clique em Design
- Na seção Ferramentas, clique em Adicionar campos existentes
- Na Lista de Campos, clique em Apartamento, pressione e segure Shift, clique em Regist # e solte Shift
- Arraste a seleção para o formulário
- Na faixa de opções, clique em Organizar e clique em Tabular
- Arraste a seleção para a esquerda
- Pressione Ctrl + A para selecionar todos os controles
- Na faixa de opções, clique em Remover layout
- Preencha o design do formulário. Aqui está um exemplo:
- Salve e feche o formulário
Junções de dados e análises de registros
Classificação de registros
Nas junções de dados que criamos até agora, consideramos todos os registros e deixamos que o mecanismo de banco de dados os liste usando apenas as regras de junções embutidas no SQL. Para tornar essa lista mais restritiva, você pode aplicar algumas condições para isolar alguns registros. Você pode criar visualmente os filtros no Modo Design de uma consulta ou em uma janela semelhante. Você também pode criar um filtro no SQL. Como feito nas lições anteriores, para incluir um critério em um SELECT declaração, você pode criar um WHERE cláusula.
Aprendizagem prática:introdução de junções e análise de dados
- Abra o banco de dados da Monson University1 usado anteriormente
- Para iniciar uma consulta, na faixa de opções, clique em Criar e clique em Design da consulta
- Na caixa de diálogo Mostrar tabela, clique em Fechar
- Clique com o botão direito do mouse na parte superior da janela e clique em Visualização SQL
- Altere a instrução da seguinte forma:
SELECT EmployeeNumber AS [Employee #], FirstName AS [First Name], LastName AS [Last Name], Title, DepartmentName AS Department FROM Employees, Departments WHERE Employees.DepartmentCode = Departments.DepartmentCode ORDER BY LastName;
- Visualize os resultados na Visualização de folha de dados
- Se necessário, na Faixa de Opções, clique em Página inicial.
Altere as seguintes características:
Nome da fonte:Californian FB (se você não tiver essa fonte, selecione Times New Roman)
Cor da fonte:azul, acento 1, mais claro 80% (cores do tema:5ª coluna, 2ª linha)
Cor de fundo:Mais cores:Vermelho:195, Verde:95, Azul:15
Linhas de grade:horizontais
Cor da linha alternativa:Mais cores:Vermelho:128, Verde:0, Azul:0
- Feche a consulta sem salvá-la
- Fechar o Microsoft Access