OVH Cloud OVH Cloud

precision sur inner join

4 réponses
Avatar
Fred
bonjour,

j'aimerais avec des precisions sur les commandes inner join et outer join ;
en effet, je ne comprends pas trop la difference entre ces deux dernieres et
une instruction where dans laquelle on met la clause d'egalite sur 2 cles

Ex:

select table1.toto,table2.tata from table1,table2 where table1.ID= table2.ID

me semble identique a :

select table1.toto,table2.tata
from table1 as t1
inner join table2 as t2
on t1.id=t2.id


Qui peut m'expliquer la difference ????
quel est le plus rapide au niveau du traitement ?
y a t'il une raison particuliere au "inner join" ?


Merci de votre aide

Fred
select

4 réponses

Avatar
bruno reiter [MVP]
les deux sont équivalents, mais la meilleure syntaxe est la deuxième.

d'abord parce que ça correspond à la norme actuelle

ensuite parce que certains problèmes ne peuvent etre résolus avec la
première

ensuite parce qu'il est plus clair de séparer les clauses de jointures des
clauses de sélection

HTH

br

"Fred" wrote in message
news:427a16d9$0$1252$
bonjour,

j'aimerais avec des precisions sur les commandes inner join et outer join
;
en effet, je ne comprends pas trop la difference entre ces deux dernieres
et
une instruction where dans laquelle on met la clause d'egalite sur 2 cles

Ex:

select table1.toto,table2.tata from table1,table2 where table1.ID=
table2.ID

me semble identique a :

select table1.toto,table2.tata
from table1 as t1
inner join table2 as t2
on t1.id=t2.id


Qui peut m'expliquer la difference ????
quel est le plus rapide au niveau du traitement ?
y a t'il une raison particuliere au "inner join" ?


Merci de votre aide

Fred
select




Avatar
Philippe Freddi
Bonjour,

Inner join soit la jointure interne

affiche un résultat pour chaque enregistrement de la table 1 pour lequel il
y a une correspondance sur la jointure
select table1.toto,table2.tata
from table1 as t1
inner join table2 as t2
on t1.id=t2.id

ou
select table1.toto,table2.tata from table1,table2 where table1.ID= table2.ID

Outer Join
Idem que l'Inner join mais rajoute les enregistrements de la table gauche ou
droite pour lesquels il n'y a pas de correspondances en fonction du type de
jointure LEFT ou RIGHT
select table1.toto,table2.tata
from table1 as t1
LEFT OUTER join table2 as t2
on t1.id=t2.id


Cross Join soit le produit cartésien
affiche pour chaque enregistrement de la table 1 toutes les combinaisons
avec la table 2

select table1.toto,table2.tata from table1,table2
ou
select table1.toto,table2.tata from table1 cross join table2

Si Table1 = 5 enregistrements et table 2 = 6 enregistrements

La requête retourne 30 enregistrements


Salutations


Philippe
Avatar
Sebastien
Philippe Freddi a écrit :

Bonjour,
.................
Outer Join
Idem que l'Inner join mais rajoute les enregistrements de la table
gauche ou droite pour lesquels il n'y a pas de correspondances en
fonction du type de jointure LEFT ou RIGHT
select table1.toto,table2.tata
from table1 as t1
LEFT OUTER join table2 as t2
on t1.id=t2.id




Pour compléter la liste, en plus du LEFT OUTER JOIN (ou LEFT JOIN) et du
RIGHT OUTER JOIN (ou RIGHT JOIN), il y a également la jointure externe
complète avec le FULL OUTER JOIN (ou FULL JOIN), c'est-à-dire l'équivalent
d'un LEFT JOIN et d'un RIGHT JOIN en même temps

Sébastien
Avatar
Fr
Je vous conseil l'excelent SQL de A à Z de Fred Brouard (Qui répond
d'ailleurs souvent sur ce Newsgroup).
J'ai aussi acheté son livre qui est très didactique pour les débutants
mais qui permet aussi de faire de bonne révision pour les initiés.

http://sqlpro.developpez.com/cours/sqlaz/jointures/




Sebastien wrote:
Philippe Freddi a écrit :

Bonjour,
.................
Outer Join
Idem que l'Inner join mais rajoute les enregistrements de la table
gauche ou droite pour lesquels il n'y a pas de correspondances en
fonction du type de jointure LEFT ou RIGHT
select table1.toto,table2.tata
from table1 as t1
LEFT OUTER join table2 as t2
on t1.id=t2.id




Pour compléter la liste, en plus du LEFT OUTER JOIN (ou LEFT JOIN) et du
RIGHT OUTER JOIN (ou RIGHT JOIN), il y a également la jointure externe
complète avec le FULL OUTER JOIN (ou FULL JOIN), c'est-à-dire
l'équivalent d'un LEFT JOIN et d'un RIGHT JOIN en même temps

Sébastien