Question sur NATURAL JOIN - SQL/NoSQL - Programmation
Marsh Posté le 23-01-2005 à 13:10:58
Chronoklazm a écrit : Voila, en fait j'aimerais savoir la difference entre NATURAL JOIN et LEFT OUTER JOIN |
NATURAL JOIN te permet d'omettre la condition de jointure (ON table1.id = table2.id...) si les 2 tables jointes possèdent un champ dont le nom est le même sur chacune d'entre elles. LEFT OUTER JOIN t'oblige à spécifier cette condition
Chronoklazm a écrit : |
la question est plutot : quelle genre de requete ne permet uniquement d'utiliser que la sous requete au lieu de la jointure
Marsh Posté le 23-01-2005 à 14:07:31
OK merci pour JOIN
Non, en fait c'était l'inverse: ma question était simplement dans quel cas on ne peut pas remplacer une jointure par une sous requete.
Sinon pour la sous-requete qu'on ne peut remplacer par une jointure j'ai un exemple :
Un truc tout bete ... On a un tableau d'employé (clé prim : matricule) et un tableau de departement (clé prim num_dept).
Si on veut les noms et lieux des départements dans lesquels il n'y a pas d'ingénieur. On peut le faire uniquement avec une sous interrogation:
Code :
|
C'est pas faisable avec une jointure ...
Sinon j'ai l'impression que des qu'il y a une jointure possible on peut la remplacer par une sous-interro (enfin un truc avec des SELECT dans les WHERE à gogo...)
Marsh Posté le 23-01-2005 à 15:10:08
Chronoklazm a écrit : OK merci pour JOIN
|
Euh bien sur que si...
Code :
|
Marsh Posté le 23-01-2005 à 15:20:49
Pourtant ca me donne pas la meme chose
Marsh Posté le 23-01-2005 à 15:40:12
ah oui j'ai pas lu ton post en entier, j'ai fait que lire la requete. En remplacant le "inner join" par un "left outer join" ca va renovyer en plus les departements n'ayant pas d'employé (donc pas d'ingénieur). Ca correspondra ptet plus à ce que tu veux
Marsh Posté le 23-01-2005 à 16:01:02
Code :
|
Ca me zappe un nom de departement (par rapport a la version de sous-interro) en plus de donner les dept n'ayant pas d'employé ...
Marsh Posté le 23-01-2005 à 16:04:19
Essaye ça :
Code :
|
Marsh Posté le 23-01-2005 à 16:12:52
J'ai testé
Code :
|
Sans le not il me renvoyé rien. Sinon s'est toujours pareil.
Marsh Posté le 23-01-2005 à 12:42:27
Voila, en fait j'aimerais savoir la difference entre NATURAL JOIN et LEFT OUTER JOIN, et aussi un autre truc: là j'ai trouvé un cas ou on ne peut pas fremplacer une requete à base de sous-interrogation par une requete utilisant la jointure, est-ce qu'il y a des cas ou on ne peut pas remplacer une requete avec jointure par une requete à base de sous-interrogations ?