0% ont trouvé ce document utile (0 vote)
16 vues8 pages

3.2 SQL - Jointures

Le document traite des jointures en SQL, expliquant qu'une jointure est un produit cartésien suivi d'une sélection. Il présente différentes syntaxes pour effectuer des jointures, y compris les jointures naturelles et non naturelles, ainsi que des exemples pratiques. Enfin, il souligne que la syntaxe choisie n'affecte pas l'évaluation par le système, et qu'il est essentiel de gérer les ambiguïtés par le renommage des attributs.

Transféré par

Mejdi
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
16 vues8 pages

3.2 SQL - Jointures

Le document traite des jointures en SQL, expliquant qu'une jointure est un produit cartésien suivi d'une sélection. Il présente différentes syntaxes pour effectuer des jointures, y compris les jointures naturelles et non naturelles, ainsi que des exemples pratiques. Enfin, il souligne que la syntaxe choisie n'affecte pas l'évaluation par le système, et qu'il est essentiel de gérer les ambiguïtés par le renommage des attributs.

Transféré par

Mejdi
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

SQL: jointures

Serge Abiteboul, Directeur de Recherche INRIA


Philippe Rigaux, Professeur des Universités au Cnam

1 Philippe Rigaux - SQL: jointures


Jointures

Jointure = produit cartésien composé avec une sélection.

select expressions
from table1 cross join table2
[where condition_jointure]

Interprétation : comme avant, l’espace de recherche (from) est


maintenant la table résultat de table1 × table2

Remarque: autres syntaxes


SQL propose plusieurs syntaxes équivalentes pour la jointure.
Nous donnons les autres options plus tard.

2 Philippe Rigaux - SQL: jointures


Cas extrême : le produit cartésien

Sans clause where, on effectue un produit cartésien.


select * from Logement cross join Activité
code nom capacité type codeLog. codeActivité
ca Causses 45 Auberge ca Randonnée
ge Génépi 134 Hôtel ca Randonnée
pi U Pinzutu 10 Gîte ca Randonnée
ta Tabriz 34 Hôtel ca Randonnée
ca Causses 45 Auberge ge Piscine
ge Génépi 134 Hôtel ge Piscine
pi U Pinzutu 10 Gîte ge Piscine
... ... ... ... ... ...

Quels nuplets nous intéressent particulièrement ?

3 Philippe Rigaux - SQL: jointures


En ajoutant la sélection

Le plus souvent, la jointure est “naturelle” : la clé primaire


d’une table doit être égale à la clé étrangère d’une autre.

select * from Logement cross join Activité


where code = codeLogement

code nom capacité type codeLog. codeActivité


ca Causses 45 Auberge ca Randonnée
ge Génépi 134 Hôtel ge Piscine
ge Génépi 134 Hôtel ge Ski
pi U Pinzutu 10 Gîte pi Plongée
pi U Pinzutu 10 Gîte pi Voile

4 Philippe Rigaux - SQL: jointures


Plus de deux tables ?

Aucun problème : on les énumère dans le from.


Exemple : les voyageurs et les logements qu’ils ont visités.

select [Link] as nomVoyageur, [Link] as nomLogement


from Logement as L, Séjour as S, Voyageur as V
where code = [Link]
and [Link] = [Link]

Remarque 1 : dans la clause from, on utilise le plus souvent la


virgule à la place de cross join.
Remarque 2 : le renommage as sert, notamment, à gérer les
ambiguités soulevées par les noms d’attributs.

5 Philippe Rigaux - SQL: jointures


D’autres syntaxes ?

SQL connaît la jointure naturelle.

select *
from Séjour natural join Voyageur

idV. idS. codeL. début fin nom prénom ville


10 1 pi 20 20 Fogg Phileas Ajaccio
10 6 pi 10 12 Fogg Phileas Ajaccio
20 2 ta 21 22 Bouvier Nicolas Aurillac
20 4 pi 19 23 Bouvier Nicolas Aurillac
... ... ... ... ... ... ... ...

NB : l’attribut codeLogement apparaît une seule fois

6 Philippe Rigaux - SQL: jointures


D’autres syntaxes ?

SQL connaît aussi la jointure “non naturelle” (les attributs de


jointure n’ont pas le même nom).

select *
from Logement join Activité on (code=codeLogement)

Intérêt ? Aucun. Connaître une syntaxe suffit. Celle que nous


avons présenté au début est la plus lisible et la plus neutre.

Remarque: La syntaxe ne compte pas !


Il existe 100 façons d’écrire une même requête : aucune n’est
meilleure qu’une autre : le système décide seul de l’évaluation !

7 Philippe Rigaux - SQL: jointures


À retenir

La jointure est obtenue en effectuant un produit cartésien dans


le from.

• Tout se passe comme si on interrogeait une seule table,


celle définie par table1 × table2
• Le critère de jointure est exprimé dans le where, avec les
critères (éventuels) de sélection
• Les synonymes (attributs ou tables) entrainent des
ambiguités, et nécessitent des renommages

Beaucoup de syntaxes alternatives (dues aux deux paradigmes


fondant SQL). En connaître une suffit.

8 Philippe Rigaux - SQL: jointures

Vous aimerez peut-être aussi