Comment utiliser une base rejoindre dans SQL

Toute requête SQL multitable est un type de jointure. Les tables source sont reliées dans le sens où la table de résultats contient des informations provenant de toutes les tables source. Le plus simple jointure est une de deux tables SELECT qui n'a pas éliminatoires de la clause: Chaque ligne de la première table est jointe à chaque ligne de la deuxième table.

Le tableau de résultat est le produit cartésien des deux tables source. Le nombre de lignes dans la table de résultats est égal au nombre de lignes de la première table source multiplié par le nombre de lignes de la seconde table source.

Par exemple, imaginez que vous êtes le responsable du personnel pour une entreprise et la partie de votre travail est de maintenir les dossiers des employés. La plupart des données sur les employés, comme l'adresse du domicile et numéro de téléphone, ne sont pas particulièrement sensibles. Mais certaines données, telles que le salaire actuel, devraient être disponibles seulement au personnel autorisé. Pour maintenir la sécurité de l'information sensible, conserver dans un tableau distinct qui est protégé par mot de passe.

Considérons la paire de tables suivantes:

RÉMUNÉRATIONS -------- ------------ EmpID EmployFName SalaryLName BonusCityPhone



Remplir les tables avec des données de l'échantillon:

EmpID FName LName Ville Téléphone ----- ----- ----- ---- ----- 1 Whitey Ford orange 555-10012 Don Larson Newark 555-32213 Sal Maglie Nutley 555-69054 Bob Turley Bonus Passaic 555-8908Employ Salaire ------ ------ ----- 1 33000 100002 18000 20003 24000 50004 22000 7000

Créer une table de résultats virtuelle avec la requête suivante:

SELECT * FROM fonctionnaire, la rémunération -

Voici ce que la requête produit:

EmpID FName LName Ville Bonus Employer téléphone Salaire ----- ----- ----- ---- ----- ------ ------ ----- 1 Whitey Ford orange 555-1001 1 33000 100001 Whitey Ford orange 555-1001 2 18000 20001 Whitey Ford orange 555-1001 3 24000 50001 Whitey Ford orange 555-1001 4 22000 70002 Don Larson Newark 555-3221 1 33000 100002 Don Larson Newark 555- 3221 18000 2 20002 Don Larson Newark 555-3221 3 24000 50002 Don Larson Newark 555-3221 4 22000 70003 Sal Maglie Nutley 555-6905 1 33000 100003 Sal Maglie Nutley 555-6905 2 18000 20003 Sal Maglie Nutley 555-6905 3 24000 50003 Sal Maglie Nutley 555-6905 4 22000 70004 Bob Turley Passaic 555-8908 1 33000 100004 Bob Turley Passaic 555-8908 2 18000 20004 Bob Turley Passaic 555-8908 3 24000 50004 Bob Turley Passaic 555-8908 4 22000 7000

Le tableau de résultat, qui est le produit cartésien des tables sociaux et rémunération, contient une redondance considérable. En outre, il n'a pas beaucoup de sens. Il combine tous les rangs de l'employé avec chaque ligne de l'indemnisation.

Les seules lignes qui apportent des informations utiles sont ceux dans lesquels le EmpID nombre qui est venu de l'employé correspond à la Employer nombre qui est venu de l'indemnisation. Dans ces lignes, le nom et l'adresse d'un employé sont associés à sa rémunération.

Lorsque vous essayez d'obtenir des informations utiles sur une base de données multitable, le produit cartésien produite par une base de jointure est presque jamais ce que vous voulez, mais il est presque toujours la première étape vers ce que vous voulez. En appliquant des contraintes à la INSCRIPTION avec un article, vous pouvez filtrer les lignes indésirables.


» » » » Comment utiliser une base rejoindre dans SQL