2015-08-20 1 views
0

J'ai perdu mes notes sur cette section et je ne trouve aucune information là-dessus. Je sais ce qu'est le produit cartésien mais je ne sais pas ce que cela signifie par attribut commun ou pourquoi cela doit être égal. disons que j'ai ditPourquoi, quand le produit cartésien est formé entre les tables doit-on toujours vérifier que l'attribut commun est égal à travers la table?

SELECT * 
FROM STUDENT,ENROLS 

quel est l'attribut commun ici ou serait-ce l'une des lignes dans ceux-ci?

Répondre

1

Lorsqu'un produit cartésien est formé dans une requête SQL comme

SELECT table1.colonne1, table2.column2 ... FROM table1, table2

est logiquement équivalent à un jointure interne dans lequel la condition de test -aussi- évalue à vrai.

Ainsi, la table résultante sera une jointure croisée (ou produit cartésien) dans laquelle chaque rangée du premier opérande de table est combinée avec toutes les rangées du second opérande de table.

Le produit cartésien n'est pas formé en vérifiant une condition de test ou un attribut commun, mais il peut être filtré ultérieurement par une condition de test, par ex. WHERE clause, tout comme un Inner Join peut être.

0

Non, vous n'avez pas besoin de vérifier un attribut commun. Cependant, si vous ne le faites pas, vous obtenez une jointure croisée/une jointure externe qui pourrait ne pas correspondre à ce que vous voulez (combiner chaque étudiant avec chaque inscription). Généralement, une telle jointure croisée est ensuite filtrée pour certaines conditions (comme la planification de créneaux horaires). Mais pour des questions telles que «Liste des étudiants avec des inscriptions possibles» ou «Liste de tous les étudiants inscrits», une jointure GAUCHE ou DROITE est préférable.

Voir ici pour plus de détails: What is the difference between "INNER JOIN" and "OUTER JOIN"?