Access
 sql >> Base de données >  >> RDS >> Access

Introduction aux jointures de données et aux relations

Options sur les jointures de données

Jointures de données et nullité d'enregistrement

Parfois, vous aurez une table où un champ manque certains enregistrements. Voici un exemple de liste d'employés où certains enregistrements ne précisent pas le service auquel appartient l'employé :

SELECT Employees.EmployeeNumber AS [Employee #],
       Employees.FirstName,
       Employees.LastName,
       Employees.DepartmentCode AS Department
FROM Employees;

Cela donnerait :

Si vous créez une requête de jointure interne de deux tables qui ont une relation et que certains enregistrements de la table enfant manquent de certaines valeurs dans la colonne de clé étrangère, la requête produira uniquement les enregistrements qui ont une valeur. Voici un exemple :

SELECT Employees.EmployeeNumber AS [Employee #],
       Employees.FirstName,
       Employees.LastName,
       Departments.DepartmentName AS Department
FROM   Departments INNER JOIN Employees
       ON Departments.DepartmentCode = Employees.DepartmentCode;

Cela donnerait :

Notez que la requête produit moins d'enregistrements. Il se trouve que les moteurs de base de données n'aiment pas les enregistrements nuls, en particulier sur les champs partagés, les champs impliqués dans des relations. Pour vous assurer que tous les enregistrements d'une table enfant sont produits par une requête, produisez une valeur par défaut pour les enregistrements dont les valeurs sont manquantes. Si la relation utilise un entier simple, créez un enregistrement avec la valeur 0. Si la relation utilise une chaîne, vous pouvez créer un enregistrement avec une valeur "N/A". Si les enregistrements sont traités par un ordinateur, vous pouvez créer un enregistrement avec une valeur générique/aléatoire telle que 00000 ou quelque chose comme ça.

Apprentissage pratique :gestion des jointures de données et de la nullité des enregistrements

  1. Démarrer Microsoft Access
  2. À partir des ressources qui accompagnent ces leçons, ouvrez la base de données Altair Realtors3
  3. Sur le ruban, cliquez sur Créer, puis sur Conception de requête
  4. Dans la boîte de dialogue Afficher la table, double-cliquez sur Propriétés et cliquez sur Fermer
  5. Dans la liste des propriétés, double-cliquez sur PropertyNumber, City et State
  6. Passez la requête en mode feuille de données :

  7. Remarquez le nombre d'enregistrements :48.
    Passer la requête en mode Création
  8. Cliquez avec le bouton droit sur une zone vide en haut de la fenêtre et cliquez sur Afficher le tableau
  9. Dans la boîte de dialogue Afficher la table, double-cliquez sur PropertyTypes et cliquez sur Fermer
  10. Dans la liste PropertyTypes, double-cliquez sur PropertyType

  11. Basculer la requête vers le mode Feuille de données

  12. Remarquez le nombre d'enregistrements cette fois :44.
    Affichez la vue SQL de la requête et modifiez son code comme suit :
    SELECT Properties.PropertyNumber,
           Properties.City,
           Properties.State,
           Conditions.Condition
    FROM   Properties INNER JOIN Conditions
           ON Properties.Condition = Conditions.Condition;
  13. Basculer la requête vers le mode Feuille de données

  14. Remarquez le nombre d'enregistrements :38.
    Fermer la requête sans l'enregistrer
  15. Dans le volet de navigation, double-cliquez sur le formulaire PropertyTypes
  16. Créez un nouvel enregistrement comme suit :
    Type de propriété Description Inconnu Le type de propriété n'est pas disponible ou n'est pas clair. Illustrations
  17. Fermer la table PropertyTypes
  18. Dans le volet de navigation, double-cliquez sur le formulaire Conditions
  19. Créez un nouvel enregistrement comme suit :
    Type de propriété Description Inconnu L'état actuel ou l'apparence (intérieure et/ou extérieure) de la propriété n'a pas été vérifiée, n'a pas été évaluée ou n'est pas clairement connue.
  20. Fermer le tableau des conditions
  21. Dans le volet de navigation, cliquez avec le bouton droit sur le tableau Propriétés et cliquez sur Mode Création
  22. En haut de la fenêtre, cliquez sur PropertyType
  23. En bas, cliquez sur Valeur par défaut et saisissez Inconnu
  24. En haut de la fenêtre, cliquez sur Condition
  25. En bas, cliquez sur Valeur par défaut et saisissez Inconnu
  26. Enregistrez le tableau et passez-le en mode Feuille de données
  27. Dans la colonne PropertyType, pour chaque cellule vide, sélectionnez Inconnu
  28. Dans la colonne Condition, pour chaque cellule vide, sélectionnez Inconnu
  29. Notez qu'il existe une valeur par défaut pour les colonnes PropertyType et Condition
  30. En définissant uniquement les valeurs indiquées, créez de nouveaux enregistrements comme suit :
    Numéro de propriété Type de propriété Ville État Code postal Chambres Salle de bain Sous-sol fini Garage intérieur État Valeur marchande 476005 Unifamiliale Hanovre PA 17331 3 2,50 Vérifié 425790 152466 Martinsburg WV 1 1,00 135670 427048 Condominium Alexandria VA 3 2,00 Besoin de réparation 622845 297427 Matinsburg Excellent 729336 Alexandria VA 3 2,50 Besoin de réparation 750000 300618 Harrisburg PA 17109 5 3,50 Vérifié Vérifié Bonne forme 515885

  31. Fermer le tableau
  32. Sur le ruban, cliquez sur Créer, puis sur Conception de requête
  33. Dans la boîte de dialogue Afficher la table, double-cliquez sur Propriétés et cliquez sur Fermer
  34. Dans la liste des propriétés, double-cliquez sur PropertyNumber, City et State
  35. Passer la requête en mode Feuille de données
  36. Remarquez le nombre d'enregistrements :51.
    Passer la requête en mode Création
  37. Cliquez avec le bouton droit sur une zone vide en haut de la fenêtre et cliquez sur Afficher le tableau
  38. Dans la boîte de dialogue Afficher la table, double-cliquez sur PropertyTypes et cliquez sur Fermer
  39. Dans la liste PropertyTypes, faites glisser PropertyType et déposez-le sur City en bas
  40. Dans la liste des propriétés, double-cliquez sur Chambres et salles de bains

  41. Basculer la requête vers le mode Feuille de données

  42. Remarquez le nombre d'enregistrements cette fois :51.
    Fermer la requête sans l'enregistrer
  43. Ouvrir la base de données Lambda Square Apartments1 créée et utilisée précédemment
  44. Sur le ruban, cliquez sur Créer, puis sur Conception de requête
  45. Dans la boîte de dialogue Afficher le tableau, double-cliquez sur Paiements et cliquez sur Fermer
  46. Dans la liste Paiements, double-cliquez sur ReceiptNumber, PaymentDate, ProcessedBy, RegistrationNumber et PaymentAmount
  47. Basculer la requête vers le mode Feuille de données

  48. Remarquez le nombre d'enregistrements :63.
    Passer la requête en mode Création
  49. Cliquez avec le bouton droit sur une zone vide de la fenêtre et cliquez sur Afficher le tableau...
  50. Dans la boîte de dialogue Afficher le tableau, double-cliquez sur Employés et cliquez sur Fermer
  51. Faites glisser EmployeeNumber et déposez-le sur ProcessedBy
  52. En bas de la fenêtre, remplacez ProcessedBy par
    Employee: [EmployeeNumber] & " - " & [EmployeeName] & " (" & [Title] & ")"

  53. Basculer la requête vers le mode Feuille de données

  54. Remarquez le nombre d'enregistrements :46.
    Fermer la requête sans l'enregistrer
  55. Dans le volet de navigation, double-cliquez sur la table Employés et créez un nouvel enregistrement comme suit (pour les transactions effectuées à la banque, par exemple un locataire qui dépose l'argent du loyer directement à la banque) :
    Numéro d'employé Prénom Nom de famille Titre 00000 Transaction électronique de traitement automatique
  56. Fermer le tableau Employés
  57. Dans le volet de navigation, cliquez avec le bouton droit sur le tableau Paiements et cliquez sur Mode Création
  58. En haut de la fenêtre, cliquez sur Traité par
  59. En bas, cliquez sur Valeur par défaut et saisissez "00000"
  60. Enregistrer et fermer le tableau
  61. Ouvrir le tableau Paiements
  62. Dans la colonne ProcessedBy, dans chaque cellule vide, saisissez 00000
  63. Fermer le tableau Paiements
  64. Sur le ruban, cliquez sur Créer, puis sur Conception de requête
  65. Dans la boîte de dialogue Afficher le tableau, double-cliquez sur Paiements et employés
  66. Cliquez sur Fermer
  67. Faites glisser EmployeeNumber et déposez-le sur ProcessedBy
  68. Dans la liste Paiements, double-cliquez sur ReceiptNumber et PaymentDate
  69. Appuyez sur Tab et saisissez
    Employee: [EmployeeNumber] & " - " & [EmployeeName] & " (" & [Title] & ")"
  70. Dans la liste Paiements, double-cliquez sur RegistrationNumber et PaymentAmount
  71. Passer la requête en mode Feuille de données
  72. Remarquez le nombre d'enregistrements :63.
    Fermer la requête sans l'enregistrer

Joindre plus de deux tables

Jusqu'à présent, nos instructions de jointure n'impliquaient que deux tables. En fait, vous pouvez utiliser plus de tables que cela. La formule de base pour joindre trois tables est :

SELECT field-name(s) FROM first-table
first-join-type second-table ON condition1
second-join-type third-table ON condition2

Vous démarrez l'expression en joignant la première à la deuxième table, ce qui signifie que les deux tables doivent partager une colonne dans une relation de type clé primaire-clé étrangère. De la même manière, vous pouvez créer la deuxième jointure. Bien sûr, les deuxième et troisième tableaux doivent avoir une colonne commune. Dans la plupart des cas, il devrait y avoir une colonne partagée par les trois tables. La plupart du temps, la relation commence par une colonne de clé primaire de la table parent. Cette colonne est alors représentée comme une clé étrangère dans les deux autres tables.

Apprentissage pratique :Joindre plus de deux tables

  1. Sur le ruban, cliquez sur Créer, puis sur Conception de formulaire
  2. Dans la feuille de propriétés, cliquez sur l'onglet Tout.
    Cliquez sur Enregistrer la source et cliquez sur son bouton points de suspension
  3. Dans le tableau Afficher, double-cliquez sur Employés, Inscriptions et Appartements
  4. Cliquez sur Fermer
  5. Faites glisser EmployeeNumber de la liste Employees et déposez-le sur ProcessedBy dans la liste Registrations
  6. Faites glisser ApartmentCode de la liste des appartements et déposez-le sur PropNbr dans la liste des inscriptions

  7. Dans la liste des enregistrements, double-cliquez sur ID d'enregistrement et Date d'enregistrement
  8. Appuyez sur Tab et saisissez
    Employee: [EmployeeNumber] & " - " & [EmployeeName] & " (" & [Title] & ")"
  9. Dans la liste des inscriptions, double-cliquez sur FirstName, LastName, MaritalStatus et NumberOfChildren
  10. Appuyez sur Tab et tapez :
    Apartment: "Apart # " & [UnitNumber] & ", " & [Bedrooms] & " bedroom(s), " & [Bathrooms] & " bathroom(s), Rate: " & [MonthlyRate] & "/month"
  11. Afficher la vue SQL de la requête :
    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. Fermer le générateur de requêtes
  13. Lorsqu'on vous demande si vous souhaitez enregistrer les modifications, cliquez sur Oui
  14. Enregistrer le formulaire sous Allocations de loyer
  15. Double-cliquez sur le bouton à l'intersection des règles
  16. Dans la feuille de propriétés, modifiez les caractéristiques suivantes :
    Légende :Lambda Square Apartments - Allocation de loyer
    Valeur par défaut :Forme continue
    Centre automatique :Oui
    Boutons de navigation :Non
  17. Sur le ruban, cliquez sur Conception
  18. Dans la section Outils, cliquez sur Ajouter des champs existants
  19. Dans la liste des champs, cliquez sur Appartement, maintenez la touche Maj enfoncée, cliquez sur Numéro d'enregistrement et relâchez la touche Maj
  20. Faites glisser la sélection vers le formulaire
  21. Sur le ruban, cliquez sur Réorganiser, puis sur Tabulaire
  22. Faites glisser la sélection vers la gauche
  23. Appuyez sur Ctrl + A pour sélectionner tous les contrôles
  24. Sur le ruban, cliquez sur Supprimer la mise en page
  25. Terminez la conception du formulaire. Voici un exemple:

  26. Enregistrer et fermer le formulaire

Jointures de données et analyses d'enregistrements

Tri des enregistrements

Dans les jointures de données que nous avons créées jusqu'à présent, nous avons considéré tous les enregistrements et laissé le moteur de base de données les répertorier en utilisant uniquement les règles de jointures intégrées au SQL. Pour rendre une telle liste plus restrictive, vous pouvez appliquer certaines conditions permettant d'isoler certains enregistrements. Vous pouvez créer visuellement les filtres dans le mode Création d'une requête ou dans une fenêtre similaire. Vous pouvez également créer un filtre en SQL. Comme fait dans les leçons précédentes, pour inclure un critère dans un SELECT déclaration, vous pouvez créer un WHERE clause.

Apprentissage pratique :Présentation des jointures et de l'analyse des données

  1. Ouvrir la base de données Monson University1 utilisée précédemment
  2. Pour lancer une requête, dans le ruban, cliquez sur Créer, puis sur Conception de requête
  3. Dans la boîte de dialogue Afficher le tableau, cliquez sur Fermer
  4. Cliquez avec le bouton droit sur le côté supérieur de la fenêtre et cliquez sur Vue SQL
  5. Modifiez l'instruction comme suit :
    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. Prévisualiser les résultats dans la vue Feuille de données
  7. Si nécessaire, dans le ruban, cliquez sur Accueil.
    Modifiez les caractéristiques suivantes :
    Nom de la police :Californian FB (si vous n'avez pas cette police, sélectionnez Times New Roman)
    Couleur de la police :bleu, accent 1, plus clair 80 % (couleurs du thème :5e colonne, 2e ligne)
    Couleur de fond :Plus de couleurs :Rouge :195, Vert :95, Bleu :15
    Quadrillage :Horizontal
    Couleur de ligne alternative :Plus de couleurs :Rouge :128, Vert :0, Bleu :0

  8. Fermer la requête sans l'enregistrer
  9. Fermer Microsoft Access