Pouvez-vous me dire si la jointure interne et l'équi-jointure sont identiques ou non ?
Réponses
Trop de publicités?Une "jointure interne" n'est pas la même chose qu'une "équi-jointure" en termes généraux.
équi-joint signifie joindre des tables en utilisant l'opérateur d'égalité ou un équivalent. J'appellerais toujours une jointure externe une "jointure d'égalité" si elle utilise uniquement l'égalité (d'autres peuvent ne pas être d'accord).
jointure interne est opposé à jointure externe et détermine comment joindre deux ensembles lorsqu'il n'y a pas de valeur correspondante.
C'est simple : une équi-jonction est un type possible de jonctions internes
Pour une explication plus approfondie :
Une jointure interne est une jointure qui renvoie uniquement les lignes des tables jointes lorsqu'une certaine condition est remplie. Cette condition peut être d'égalité, ce qui signifie que nous aurions un équi-joint si la condition n'est pas celle de l'égalité - qui peut être une non-égalité, plus grande que, moins grande que, entre, etc. - nous avons un nonequi-joint appelé plus précisément theta-join.
Si nous ne voulons pas que ces conditions soient nécessairement remplies, nous pouvons avoir des jointures externes (toutes les lignes de toutes les tables sont retournées), des jointures gauches (toutes les lignes (tous les enregistrements de la table de gauche sont renvoyés, mais la table de droite ne correspond qu'à eux), une jointure droite (toutes les lignes de la table de droite sont renvoyées, avec une correspondance uniquement pour la table de gauche).
La réponse est NON.
Une équi-jonction est utilisé pour faire correspondre deux colonnes de deux tables en utilisant l'opérateur explicite \= :
Ejemplo:
select *
from table T1, table2 T2
where T1.column_name1 = T2.column_name2
Une jointure interne est utilisé pour obtenir le produit croisé entre deux tables, en combinant tous les enregistrements des deux tables. Pour obtenir le bon résultat, vous pouvez utiliser une équi-jonction ou une jointure naturelle (les noms des colonnes entre les tables doivent être les mêmes).
Utilisation de l'équi-joint (explicite et implicite)
select *
from table T1 INNER JOIN table2 T2
on T1.column_name = T2.column_name
select *
from table T1, table2 T2
where T1.column_name = T2.column_name
Ou Utilisation d'un joint naturel
select *
from table T1 NATURAL JOIN table2 T2
La réponse est non, voici la réponse courte et simple pour les lecteurs.
Jointure interne peut avoir une égalité (=) et d'autres opérateurs (comme <,>,<>) dans la condition de jointure.
Equi rejoint n'ont que l'opérateur d'égalité (=) dans la condition de jointure.
Equi rejoint peut être une jointure interne, une jointure externe gauche ou une jointure externe droite.
S'il doit y avoir une différence, je pense qu'elle est là. Je l'ai testée avec DB2. Dans 'equi join', vous devez sélectionner la colonne de comparaison de la table jointe, dans la jointure interne, ce n'est pas obligatoire. Exemple :-
Select k.id,k.name FROM customer k
inner join dealer on(
k.id =dealer.id
)
ici les lignes résultantes sont seulement des lignes de deux colonnes
id name
Mais je pense que dans la jointure equi, vous devez aussi sélectionner les colonnes de l'autre table.
Select k.id,k.name,d.id FROM customer k,dealer d
where
k.id =d.id
et cela donnera des lignes avec trois colonnes, il n'y a pas moyen de ne pas avoir la colonne comparée indésirable de dealer ici (même si vous ne la voulez pas), les lignes ressembleront à cela
id(from customer) name(from Customer) id(from dealer)
Il se peut que cela ne corresponde pas à votre question, mais c'est peut-être l'une des principales différences.
- Réponses précédentes
- Plus de réponses