Comment utiliser une équi-jointure dans SQL

Le plus commun jointure qui utilise SQL filtre de la clause est l'équi-jointure. Un équi-jointure est de rejoindre une base avec une clause qui contient une condition précisant que la valeur dans une colonne dans le premier tableau doit être égale à la valeur d'une colonne correspondante dans le deuxième tableau. L'application d'une équi-jointure pour les tables d'exemple apporte un résultat plus significatif:

SELECT * FROM EMPLOYÉ, COMPENSATIONWHERE EMPLOYEE.EmpID = COMPENSATION.Employ -

Cette requête donne les résultats suivants:

EmpID FName LName Ville Employer Téléphone Bonus Salaire ----- ------ ----- ---- ----- ------ ------ ----- 1 Whitey Ford orange 555-1001 1 33000 100002 Don Larson Newark 555-3221 2 18000 20003 Sal Maglie Nutley 555-6905 3 24000 50004 Bob Turley Passaic 555-8908 4 22000 7000

Dans ce tableau de résultats, les salaires et les primes sur le droit applicables aux employés nommés sur la gauche. Le tableau a encore une certaine redondance parce que le EmpID duplique la colonne Employer colonne. Vous pouvez résoudre ce problème en reformulant légèrement la requête, comme ceci:

EMPLOYÉ SELECT *, COMPENSATION.Salary, COMPENSATION.BonusFROM EMPLOYÉ, COMPENSATIONWHERE EMPLOYEE.EmpID = COMPENSATION.Employ. -

Cette requête génère la table de résultat suivant:




EmpID FName LName Ville Salaire Prime de téléphone ----- ----- ----- ---- ----- ------ ----- 1 Whitey Ford orange 555-1001 33000 100002 Don Larson Newark 555-3221 18000 20003 Sal Maglie Nutley 555-6905 24000 50004 Bob Turley Passaic 555-8908 22000 7000

Ce tableau vous indique ce que vous voulez savoir, mais ne pas vous charge avec toutes les données superflues. La requête est un peu fastidieux à écrire, cependant. Pour éviter toute ambiguïté, vous pouvez vous qualifier les noms de colonnes avec les noms des tables où ils viennent. Taper les noms de table fournit plusieurs reprises bon exercice pour les doigts, mais n'a pas d'autre mérite.

Vous pouvez réduire la quantité de frappe en utilisant des alias (ou noms de corrélation). Un alias est un nom court qui se tient pour un nom de table. Si vous utilisez des alias dans la refonte de la requête précédente, il sort comme ceci:

SELECT * E., C.Salary, C.BonusFROM EMPLOYÉ E, RÉMUNÉRATION CDes E.EmpID = C.Employ -

Dans cet exemple, E est l'alias pour l'employé, et C est l'alias d'indemnisation. L'alias est locale à la déclaration qu'elle est. Après vous déclarez un alias (dans le DE article), vous devez utiliser tout au long de l'instruction. Vous ne pouvez pas utiliser à la fois l'alias et la forme longue du nom de la table dans la même instruction.

Même si vous pouvez mélanger la forme longue de noms de table avec des alias, vous ne voudriez pas, parce que cela crée une grande confusion. Prenons l'exemple suivant:

SELECT t1.c, T2.CFROM T1 T2, T2 T1WHERE t1.c> t2.c -

Dans cet exemple, l'alias est T1 T2 et T2 pour l'alias est T1. Certes, ce ne sont pas une sélection intelligente des alias, mais il est pas interdit par les règles. Si vous mélangez des alias avec des noms de table à long formulaire, vous ne pouvez pas dire quelle table est qui.

L'exemple précédent avec des alias est équivalent à celui-ci SELECT déclaration sans alias:

T2.c SELECT, T1.CFROM T1, T2WHERE t2.c> t1.c -

SQL vous permet de joindre plus de deux tables. Le nombre maximal varie d'une mise en œuvre à l'autre. La syntaxe est analogue aux deux table dence voici à quoi il ressemble:

SELECT * E., C.Salary, C.Bonus, Y.TotalSalesFROM EMPLOYÉ E, C RÉMUNÉRATION, ventes_annuelles YWHERE E.EmpID = C.EmployAND C.Employ = Y.EmpNo -

Cette déclaration effectue une équi-jointure sur trois tables, tirant des données de rangées de chacun correspondant à produire une table de résultats qui montre les noms des vendeurs, le montant des ventes qu'ils sont responsables de, et leur rémunération. Le directeur des ventes peut rapidement voir si une indemnisation est en ligne avec la production.

Stockage de l'année à ce jour les ventes d'un vendeur dans un tableau de ventes_annuelles séparée assure une meilleure performance de l'ordinateur et de la fiabilité des données que de garder ces données dans la table EMPLOYEE. Les données dans le tableau de l'employé est relativement statique. Nom, adresse, et numéro de téléphone d'une personne ne changent pas très souvent. En revanche, les ventes de l'année-à-date changent fréquemment (vous espérez).

Parce que la table ventes_annuelles a moins de colonnes que la table des employés, vous pourriez être en mesure de mettre à jour plus rapidement. Si, dans le cadre de la mise à jour le total des ventes, vous ne touchez pas la table des employés, vous diminuez le risque de modifier accidentellement l'information des employés qui devrait rester le même.


» » » » Comment utiliser une équi-jointure dans SQL