Vous êtes obtenir la jointure naturelle, pas produit cartésien.
Une copie de chaque colonne commune et une copie de chaque colonne sont uniques à une table d'entrée. Il y a une ligne pour chaque combinaison différente d'une ligne de la table d'entrée de gauche et d'une rangée d'une table d'entrée de droite. Si une valeur de sous-programme (('kim')
) pour les colonnes communes (name
) apparaît n fois dans la table de gauche (2 fois) et m fois dans la table de droite (2 fois), elle apparaîtra n fois m fois dans la sortie (2 fois 2 fois = 4 fois)
produit cartésien Un SQL aurait des colonnes name
, city
, salary
, id
& name
et aurait une ligne pour chaque combinaison différente d'une ligne de la table d'entrée gauche et une ligne d'une table d'entrée droite.
Cela inclut toutes les combinaisons possibles d'une valeur name
de la table de gauche et de la table de droite. Mais pour cet exemple de données, il n'y a que une valeurname
sur les deux tables, donc chaque paire de valeurs de nom doit avoir cette valeur deux fois.
La jointure naturelle est la même chose que le produit cartésien suivi de la restriction sur l'égalité des colonnes communes, suivie de la projection d'une colonne commune suivie de la conservation de lignes distinctes.
joindre à la clause out vous donnera le produit cartésien des lignes –
pouvez-vous élaborer –
Vous * obtenez * la jointure naturelle, pas la jointure cartésienne. Que pensez-vous que vous devriez obtenir? [mcve] PS [Veuillez ne pas utiliser d'images/liens lorsque vous pouvez utiliser du texte.] (https://meta.stackoverflow.com/questions/285551/why-not-upload-images-of-code-on-so- when-ask-a-question/285557 # 285557) Couper et coller tout ce texte s'il vous plaît. – philipxy