Comment utiliser croix de jointure, naturel, et condition de jointure dans SQL
SQL prend en charge un certain nombre de types de jointures. Le meilleur de choisir dans une situation donnée dépend du résultat que vous essayez d'atteindre. Voici quelques détails pour vous aider à choisir celui qui vous avez besoin.
CROSS JOIN
CROSS JOIN est le mot clé pour la base rejoindre sans OÙ clause. Donc
SELECT * FROM fonctionnaire, la rémunération -
peut également être écrit comme
SELECT * FROM employé de la Croix INSCRIPTION INDEMNISATION -
Le résultat est le produit cartésien (également appelé le produit croisé) Des deux tables source. CROSS JOIN vous donne rarement le résultat final que vous voulez, mais il peut être utile que la première étape dans une chaîne d'opérations de manipulation de données qui a finalement produire le résultat désiré.
Rejoindre naturel
La jointure naturelle est un cas particulier d'une équi-jointure. Dans le OÙ clause d'une équi-jointure, une colonne d'une table source est comparée à une colonne d'une seconde table source pour l'égalité. Les deux colonnes doivent être du même type et de la longueur et doivent avoir le même nom.
En fait, dans une jointure naturelle, toutes les colonnes d'une table qui ont les mêmes noms, les types et longueurs que les colonnes correspondantes dans la deuxième table sont comparées pour l'égalité.
Imaginez que la table de compensation de l'exemple précédent a colonnes EmpID, Salaire, et Bonus plutôt que Employer, Salaire, et Bonus. Dans ce cas, vous pouvez effectuer une jointure naturelle de la table de compensation avec la table EMPLOYEE. La traditionnelle INSCRIPTION syntaxe ressemblerait à ceci:
SELECT * E., C.Salary, C.BonusFROM EMPLOYÉ E, RÉMUNÉRATION CDes E.EmpID = C.EmpID -
Cette requête est un cas particulier d'une jointure naturelle. La SELECT déclaration sera retourner rejoint les lignes où E.EmpID = C.EmpID. Considérez ce qui suit:
SELECT * E., C.Salary, C.BonusFROM EMPLOYÉ E NATURAL JOIN RÉMUNÉRATION C -
Cette requête va rejoindre les lignes où E.EmpID = C.EmpID, où E.Salary = C.Salary, et où E.Bonus = C.Bonus. La table de résultats contient uniquement les lignes où tous colonnes correspondantes correspondent. Dans cet exemple, les résultats des deux requêtes seront les mêmes car la table EMPLOYÉ ne contient pas non plus un Salaire ou un Bonus colonne.
Condition de jointure
UN condition de jointure est comme une équi-jointure, à l'exception de la condition en cours de test n'a pas besoin d'être une égalité (bien qu'il puisse être). Il peut être tout prédicat bien formé. Si la condition est remplie, alors la ligne correspondant devient une partie de la table de résultats. La syntaxe est un peu différent de ce que vous avez vu jusqu'ici: La condition est contenue dans un SUR clause plutôt que dans une OÙ clause.
Dire que statisticien de baseball veut savoir qui lanceurs de la Ligue nationale ont dressé le même nombre de jeux complets que un ou plusieurs lanceurs de la Ligue américaine. Cette question est un emploi pour une équi-jointure, qui peut également être exprimé avec la syntaxe de l'état-rejoindre:
SELECT * FROM NATIONAL INSCRIPTION AMERICANON NATIONAL.CompleteGames = AMERICAN.CompleteGames -