sql >> Database >  >> RDS >> Access

Inleiding tot gegevenskoppelingen en -relaties

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

  1. Microsoft Access starten
  2. Open uit de bronnen die bij deze lessen horen, de Altair Realtors3-database
  3. Klik op het lint op Maken en klik op Queryontwerp
  4. Dubbelklik in het dialoogvenster Tabel weergeven op Eigenschappen en klik op Sluiten
  5. Dubbelklik in de lijst Eigenschappen op PropertyNumber, City en State
  6. Schakel de query naar de gegevensbladweergave:

  7. Let op het aantal records:48.
    Schakel de query naar ontwerpweergave
  8. Klik met de rechtermuisknop op een leeg gebied aan de bovenkant van het venster en klik op Tabel weergeven
  9. Dubbelklik in het dialoogvenster Tabel weergeven op PropertyTypes en klik op Sluiten
  10. Dubbelklik in de lijst PropertyTypes op PropertyType

  11. Schakel de query naar de gegevensbladweergave

  12. 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;
  13. Schakel de query naar de gegevensbladweergave

  14. Let op het aantal records:38.
    Sluit de zoekopdracht zonder deze op te slaan
  15. Dubbelklik in het navigatiedeelvenster op het formulier PropertyTypes
  16. Maak als volgt een nieuw record:
    PropertyType Beschrijving Onbekend Het type woning is niet beschikbaar of is niet duidelijk. Illustraties
  17. Sluit de tabel PropertyTypes
  18. Dubbelklik in het navigatiedeelvenster op het formulier Voorwaarden
  19. 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.
  20. Sluit de tabel Voorwaarden
  21. Klik in het navigatiedeelvenster met de rechtermuisknop op de tabel Eigenschappen en klik op Ontwerpweergave
  22. Klik bovenaan in het venster op PropertyType
  23. Klik onderaan op Standaardwaarde en typ Onbekend
  24. Klik boven in het venster op Voorwaarde
  25. Klik onderaan op Standaardwaarde en typ Onbekend
  26. Sla de tabel op en schakel deze over naar de gegevensbladweergave
  27. Selecteer in de kolom PropertyType voor elke lege cel Onbekend
  28. Selecteer in de kolom Voorwaarde voor elke lege cel Onbekend
  29. Merk op dat er een standaardwaarde is voor zowel de kolom PropertyType als de kolom Voorwaarde
  30. 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

  31. Sluit de tafel
  32. Klik op het lint op Maken en klik op Queryontwerp
  33. Dubbelklik in het dialoogvenster Tabel weergeven op Eigenschappen en klik op Sluiten
  34. Dubbelklik in de lijst Eigenschappen op PropertyNumber, City en State
  35. Schakel de query naar de gegevensbladweergave
  36. Let op het aantal records:51.
    Schakel de query naar ontwerpweergave
  37. Klik met de rechtermuisknop op een leeg gebied aan de bovenkant van het venster en klik op Tabel weergeven
  38. Dubbelklik in het dialoogvenster Tabel weergeven op PropertyTypes en klik op Sluiten
  39. In de PropertyTypes-lijst, sleep PropertyType en zet het neer op Stad aan de onderkant
  40. Dubbelklik in de lijst Eigenschappen op Slaapkamers en badkamers

  41. Schakel de query naar de gegevensbladweergave

  42. Let op het aantal records deze keer:51.
    Sluit de zoekopdracht zonder deze op te slaan
  43. Open de Lambda Square Apartments1-database die eerder is gemaakt en gebruikt
  44. Klik op het lint op Maken en klik op Queryontwerp
  45. Dubbelklik in het dialoogvenster Tabel weergeven op Betalingen en klik op Sluiten
  46. Dubbelklik in de lijst Betalingen op ReceiptNumber, PaymentDate, ProcessedBy, RegistrationNumber en PaymentAmount
  47. Schakel de query naar de gegevensbladweergave

  48. Let op het aantal records:63.
    Schakel de query naar ontwerpweergave
  49. Klik met de rechtermuisknop op een leeg gebied in het venster en klik op Tabel weergeven...
  50. Dubbelklik in het dialoogvenster Tabel weergeven op Werknemers en klik op Sluiten
  51. Sleep EmployeeNumber en zet het op ProcessedBy
  52. Vervang ProcessedBy onder in het venster door
    Employee: [EmployeeNumber] & " - " & [EmployeeName] & " (" & [Title] & ")"

  53. Schakel de query naar de gegevensbladweergave

  54. Let op het aantal records:46.
    Sluit de zoekopdracht zonder deze op te slaan
  55. 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
  56. Sluit de tabel Medewerkers
  57. Klik in het navigatiedeelvenster met de rechtermuisknop op de tabel Betalingen en klik op Ontwerpweergave
  58. Klik bovenaan in het venster op Verwerkt door
  59. Klik onderaan op Standaardwaarde en typ "00000"
  60. Sla de tabel op en sluit deze
  61. Open de tabel Betalingen
  62. Typ in de kolom ProcessedBy in elke lege cel 00000
  63. Sluit de tabel Betalingen
  64. Klik op het lint op Maken en klik op Queryontwerp
  65. Dubbelklik in het dialoogvenster Tabel weergeven op Betalingen en werknemers
  66. Klik op Sluiten
  67. Sleep EmployeeNumber en zet het op ProcessedBy
  68. Dubbelklik in de lijst Betalingen op ReceiptNumber en PaymentDate
  69. Druk op Tab en typ
    Employee: [EmployeeNumber] & " - " & [EmployeeName] & " (" & [Title] & ")"
  70. Dubbelklik in de lijst met betalingen op RegistrationNumber en PaymentAmount
  71. Schakel de query naar de gegevensbladweergave
  72. 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

  1. Klik op het lint op Maken en klik op Formulierontwerp
  2. Klik in het eigenschappenvenster op het tabblad Alles.
    Klik op Bron opnemen en klik op de ellipsknop
  3. Dubbelklik in de Show Table op Medewerkers, Registraties en Appartementen
  4. Klik op Sluiten
  5. Sleep EmployeeNumber uit de lijst met werknemers en zet het neer op ProcessedBy in de lijst met registraties
  6. Sleep ApartmentCode uit de lijst met appartementen en zet het op PropNbr in de lijst met registraties

  7. Dubbelklik in de lijst met registraties op RegistrationID en RegistrationDate
  8. Druk op Tab en typ
    Employee: [EmployeeNumber] & " - " & [EmployeeName] & " (" & [Title] & ")"
  9. Dubbelklik in de lijst Registraties op FirstName, LastName, MaritalStatus en NumberOfChildren
  10. Druk op Tab en typ:
    Apartment: "Apart # " & [UnitNumber] & ", " & [Bedrooms] & " bedroom(s), " & [Bathrooms] & " bathroom(s), Rate: " & [MonthlyRate] & "/month"
  11. 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;
  12. Sluit de Query Builder
  13. Als u wordt gevraagd of u de wijzigingen wilt opslaan, klikt u op Ja
  14. Sla het formulier op als Rent Allocations
  15. Dubbelklik op de knop op het snijpunt van de linialen
  16. Wijzig in het eigenschappenvenster de volgende kenmerken:
    Bijschrift:Lambda Square Apartments - Huurtoewijzing
    Standaardwaarde:Continue vorm
    Auto Center:Ja
    Navigatieknoppen:Nee
  17. Klik op het lint op Ontwerpen
  18. Klik in het gedeelte Tools op Bestaande velden toevoegen
  19. Klik in de lijst met velden op Appartement, houd Shift ingedrukt, klik op Registreren # en laat Shift los
  20. Sleep de selectie naar het formulier
  21. Klik op het lint op Schikken en klik op Tabel
  22. Sleep de selectie naar links
  23. Druk op Ctrl + A om alle bedieningselementen te selecteren
  24. Klik op het lint op Lay-out verwijderen
  25. Vul het ontwerp van het formulier in. Hier is een voorbeeld:

  26. 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

  1. Open de Monson University1-database die eerder is gebruikt
  2. Als u een query wilt starten, klikt u op het lint op Maken en vervolgens op Query-ontwerp
  3. Klik in het dialoogvenster Tabel weergeven op Sluiten
  4. Klik met de rechtermuisknop op de bovenkant van het venster en klik op SQL-weergave
  5. 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;
  6. Bekijk een voorbeeld van de resultaten in de gegevensbladweergave
  7. 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

  8. Sluit de zoekopdracht zonder deze op te slaan
  9. Sluit Microsoft Access

  1. Entity Framework 6 voor MySql (C#) inschakelen in WinForms van Microsoft Visual Studio 2013

  2. Hoe kan ik de uitvoer van de draaitabel in MySQL retourneren?

  3. SQL Server SELECTEER IN @variabele?

  4. Verkrijg de korte naam van de maand in PostgreSQL