Opties voor het samenvoegen van gegevens
Gegevens samenvoegen en ongeldigheid opnemen
Soms heb je een tabel waarin een veld enkele records mist. Hier is een voorbeeld van een lijst met werknemers waarvan sommige records niet de afdeling specificeren waartoe de werknemer behoort:
SELECT Employees.EmployeeNumber AS [Employee #], Employees.FirstName, Employees.LastName, Employees.DepartmentCode AS Department FROM Employees;
Dit zou opleveren:
Als u een inner join-query maakt van twee tabellen die een relatie hebben en in sommige records van de onderliggende tabel ontbreken enkele waarden in de refererende-sleutelkolom, dan levert de query alleen de records op die een waarde hebben. Hier is een voorbeeld:
SELECT Employees.EmployeeNumber AS [Employee #], Employees.FirstName, Employees.LastName, Departments.DepartmentName AS Department FROM Departments INNER JOIN Employees ON Departments.DepartmentCode = Employees.DepartmentCode;
Dit zou opleveren:
Merk op dat de query minder records oplevert. Toevallig houden database-engines niet van null-records, vooral niet op gedeelde velden, velden die betrokken zijn bij relaties. Om ervoor te zorgen dat alle records van een onderliggende tabel worden geproduceerd door een query, moet u een standaardwaarde maken voor records waarvan de waarden ontbreken. Als de relatie een eenvoudig geheel getal gebruikt, maakt u een record met de waarde 0. Als de relatie een string gebruikt, kunt u een record maken met een 'N.v.t.'-waarde. Als de records door een computer worden verwerkt, kunt u een record maken met een generieke/willekeurige waarde zoals 00000 of iets dergelijks.
Praktisch leren:omgaan met gegevenskoppelingen en nietigheid van records
- Microsoft Access starten
- Open uit de bronnen die bij deze lessen horen, de Altair Realtors3-database
- Klik op het lint op Maken en klik op Queryontwerp
- Dubbelklik in het dialoogvenster Tabel weergeven op Eigenschappen en klik op Sluiten
- Dubbelklik in de lijst Eigenschappen op PropertyNumber, City en State
- Schakel de query naar de gegevensbladweergave:
- Let op het aantal records:48.
Schakel de query naar ontwerpweergave - Klik met de rechtermuisknop op een leeg gebied aan de bovenkant van het venster en klik op Tabel weergeven
- Dubbelklik in het dialoogvenster Tabel weergeven op PropertyTypes en klik op Sluiten
- Dubbelklik in de lijst PropertyTypes op PropertyType
- Schakel de query naar de gegevensbladweergave
- Let op het aantal records deze keer:44.
Geef de SQL-weergave van de query weer en wijzig de code als volgt:SELECT Properties.PropertyNumber, Properties.City, Properties.State, Conditions.Condition FROM Properties INNER JOIN Conditions ON Properties.Condition = Conditions.Condition;
- Schakel de query naar de gegevensbladweergave
- Let op het aantal records:38.
Sluit de zoekopdracht zonder deze op te slaan - Dubbelklik in het navigatiedeelvenster op het formulier PropertyTypes
- Maak als volgt een nieuw record:
PropertyType Beschrijving Onbekend Het type woning is niet beschikbaar of is niet duidelijk. Illustraties - Sluit de tabel PropertyTypes
- Dubbelklik in het navigatiedeelvenster op het formulier Voorwaarden
- Maak als volgt een nieuw record:
PropertyType Beschrijving Onbekend De huidige staat of uiterlijk (interieur en/of exterieur) van de woning is niet gecontroleerd, niet beoordeeld of niet duidelijk bekend. - Sluit de tabel Voorwaarden
- Klik in het navigatiedeelvenster met de rechtermuisknop op de tabel Eigenschappen en klik op Ontwerpweergave
- Klik bovenaan in het venster op PropertyType
- Klik onderaan op Standaardwaarde en typ Onbekend
- Klik boven in het venster op Voorwaarde
- Klik onderaan op Standaardwaarde en typ Onbekend
- Sla de tabel op en schakel deze over naar de gegevensbladweergave
- Selecteer in de kolom PropertyType voor elke lege cel Onbekend
- Selecteer in de kolom Voorwaarde voor elke lege cel Onbekend
- Merk op dat er een standaardwaarde is voor zowel de kolom PropertyType als de kolom Voorwaarde
- Door alleen de aangegeven waarden in te stellen, maakt u als volgt nieuwe records:
Eigendom # Type onroerend goed Stad Staat Postcode Slaapkamers Badkamers Kelder voltooid Binnen garage Conditie Marktwaarde 476005 Eengezinswoning Hannover PA 17331 3 2,50 Gecontroleerd 425790 152466 Martinsburg WV 1 1,00 135670 427048 Appartement Alexandria VA 3 2,00 Reparatie nodig 622845 297427 Matinsburg Excellent 729336 Alexandria VA 3 2,50 Reparatie 750000 300618 Harrisburg PA 17109 5 3,50 Gecontroleerd Aangevinkt Goede vorm 515885 - Sluit de tafel
- Klik op het lint op Maken en klik op Queryontwerp
- Dubbelklik in het dialoogvenster Tabel weergeven op Eigenschappen en klik op Sluiten
- Dubbelklik in de lijst Eigenschappen op PropertyNumber, City en State
- Schakel de query naar de gegevensbladweergave
- Let op het aantal records:51.
Schakel de query naar ontwerpweergave - Klik met de rechtermuisknop op een leeg gebied aan de bovenkant van het venster en klik op Tabel weergeven
- Dubbelklik in het dialoogvenster Tabel weergeven op PropertyTypes en klik op Sluiten
- In de PropertyTypes-lijst, sleep PropertyType en zet het neer op Stad aan de onderkant
- Dubbelklik in de lijst Eigenschappen op Slaapkamers en badkamers
- Schakel de query naar de gegevensbladweergave
- Let op het aantal records deze keer:51.
Sluit de zoekopdracht zonder deze op te slaan - Open de Lambda Square Apartments1-database die eerder is gemaakt en gebruikt
- Klik op het lint op Maken en klik op Queryontwerp
- Dubbelklik in het dialoogvenster Tabel weergeven op Betalingen en klik op Sluiten
- Dubbelklik in de lijst Betalingen op ReceiptNumber, PaymentDate, ProcessedBy, RegistrationNumber en PaymentAmount
- Schakel de query naar de gegevensbladweergave
- Let op het aantal records:63.
Schakel de query naar ontwerpweergave - Klik met de rechtermuisknop op een leeg gebied in het venster en klik op Tabel weergeven...
- Dubbelklik in het dialoogvenster Tabel weergeven op Werknemers en klik op Sluiten
- Sleep EmployeeNumber en zet het op ProcessedBy
- Vervang ProcessedBy onder in het venster door
Employee: [EmployeeNumber] & " - " & [EmployeeName] & " (" & [Title] & ")"
- Schakel de query naar de gegevensbladweergave
- Let op het aantal records:46.
Sluit de zoekopdracht zonder deze op te slaan - Dubbelklik in het navigatiedeelvenster op de tabel Werknemers en maak als volgt een nieuw record aan (dit is voor transacties bij de bank, zoals een huurder die huurgeld rechtstreeks bij de bank deponeert):
Werknemersnummer Voornaam Achternaam Titel 00000 Automatische verwerking van elektronische transacties - Sluit de tabel Medewerkers
- Klik in het navigatiedeelvenster met de rechtermuisknop op de tabel Betalingen en klik op Ontwerpweergave
- Klik bovenaan in het venster op Verwerkt door
- Klik onderaan op Standaardwaarde en typ "00000"
- Sla de tabel op en sluit deze
- Open de tabel Betalingen
- Typ in de kolom ProcessedBy in elke lege cel 00000
- Sluit de tabel Betalingen
- Klik op het lint op Maken en klik op Queryontwerp
- Dubbelklik in het dialoogvenster Tabel weergeven op Betalingen en werknemers
- Klik op Sluiten
- Sleep EmployeeNumber en zet het op ProcessedBy
- Dubbelklik in de lijst Betalingen op ReceiptNumber en PaymentDate
- Druk op Tab en typ
Employee: [EmployeeNumber] & " - " & [EmployeeName] & " (" & [Title] & ")"
- Dubbelklik in de lijst met betalingen op RegistrationNumber en PaymentAmount
- Schakel de query naar de gegevensbladweergave
- Let op het aantal records:63.
Sluit de zoekopdracht zonder deze op te slaan
Deelnemen aan meer dan twee tabellen
Tot nu toe hadden onze join-statements slechts betrekking op twee tabellen. Eigenlijk kun je meer tabellen gebruiken dan dat. De basisformule om drie tabellen samen te voegen is:
SELECT field-name(s) FROM first-table first-join-type second-table ON condition1 second-join-type third-table ON condition2
U start de expressie door de eerste en de tweede tabellen samen te voegen, wat betekent dat beide tabellen een kolom moeten delen in een primaire sleutel-vreemde sleutel-relatie. Op dezelfde manier kunt u de tweede join maken. Natuurlijk moeten de tweede en de derde tabel een gemeenschappelijke kolom hebben. In de meeste gevallen moet er een kolom zijn die alle drie de tabellen delen. Meestal begint de relatie met een primaire sleutelkolom uit de bovenliggende tabel. Die kolom wordt dan weergegeven als een externe sleutel in de andere twee tabellen.
Praktisch leren:meer dan twee tabellen samenvoegen
- Klik op het lint op Maken en klik op Formulierontwerp
- Klik in het eigenschappenvenster op het tabblad Alles.
Klik op Bron opnemen en klik op de ellipsknop - Dubbelklik in de Show Table op Medewerkers, Registraties en Appartementen
- Klik op Sluiten
- Sleep EmployeeNumber uit de lijst met werknemers en zet het neer op ProcessedBy in de lijst met registraties
- Sleep ApartmentCode uit de lijst met appartementen en zet het op PropNbr in de lijst met registraties
- Dubbelklik in de lijst met registraties op RegistrationID en RegistrationDate
- Druk op Tab en typ
Employee: [EmployeeNumber] & " - " & [EmployeeName] & " (" & [Title] & ")"
- Dubbelklik in de lijst Registraties op FirstName, LastName, MaritalStatus en NumberOfChildren
- Druk op Tab en typ:
Apartment: "Apart # " & [UnitNumber] & ", " & [Bedrooms] & " bedroom(s), " & [Bathrooms] & " bathroom(s), Rate: " & [MonthlyRate] & "/month"
- Geef de SQL-weergave van de query weer:
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;
- Sluit de Query Builder
- Als u wordt gevraagd of u de wijzigingen wilt opslaan, klikt u op Ja
- Sla het formulier op als Rent Allocations
- Dubbelklik op de knop op het snijpunt van de linialen
- Wijzig in het eigenschappenvenster de volgende kenmerken:
Bijschrift:Lambda Square Apartments - Huurtoewijzing
Standaardwaarde:Continue vorm
Auto Center:Ja
Navigatieknoppen:Nee - Klik op het lint op Ontwerpen
- Klik in het gedeelte Tools op Bestaande velden toevoegen
- Klik in de lijst met velden op Appartement, houd Shift ingedrukt, klik op Registreren # en laat Shift los
- Sleep de selectie naar het formulier
- Klik op het lint op Schikken en klik op Tabel
- Sleep de selectie naar links
- Druk op Ctrl + A om alle bedieningselementen te selecteren
- Klik op het lint op Lay-out verwijderen
- Vul het ontwerp van het formulier in. Hier is een voorbeeld:
- Sla het formulier op en sluit het
Gegevens samenvoegen en analyseren van records
Records sorteren
In de data-joins die we tot nu toe hebben gemaakt, hebben we alle records in overweging genomen en de database-engine ze laten weergeven met alleen de regels voor joins die in de SQL zijn ingebouwd. Om een dergelijke lijst restrictiever te maken, kunt u enkele voorwaarden toepassen om sommige records te isoleren. U kunt de filters visueel maken in de ontwerpweergave van een query of in een vergelijkbaar venster. U kunt ook een filter maken in SQL. Zoals gedaan in vorige lessen, om een criterium op te nemen in een SELECT statement, kunt u een WHERE clausule.
Praktisch leren:introductie van joins en gegevensanalyse
- Open de Monson University1-database die eerder is gebruikt
- Als u een query wilt starten, klikt u op het lint op Maken en vervolgens op Query-ontwerp
- Klik in het dialoogvenster Tabel weergeven op Sluiten
- Klik met de rechtermuisknop op de bovenkant van het venster en klik op SQL-weergave
- Wijzig de verklaring als volgt:
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;
- Bekijk een voorbeeld van de resultaten in de gegevensbladweergave
- Klik indien nodig op het lint op Home.
Wijzig de volgende kenmerken:
Lettertypenaam:Californian FB (als je dat lettertype niet hebt, selecteer dan Times New Roman)
Letterkleur:Blauw, Accent 1, Lichter 80% (Themakleuren:5e kolom, 2e rij)
Achtergrondkleur:Meer kleuren:Rood:195, Groen:95, Blauw:15
Rasterlijnen:Horizontaal
Alternatieve rijkleur:meer kleuren:rood:128, groen:0, blauw:0 - Sluit de zoekopdracht zonder deze op te slaan
- Sluit Microsoft Access