par
albat » 20 juin 2006, 15:49
Imaginons un exemple absurde, mais simple :
tu as une table HOMME qui contient des noms d'homme et une table FEMME qui...
(c'est bien ! Apparemment, jusque là, tout le monde suit...)

Certains de ces hommes et femmes sont mariés (ils ont le même id, les autres sont célibataires)
SELECT H.h_id, F.f_id FROM homme H INNER JOIN femme F ON H.h_id=F.f_id
j'obtiens tous les couples composés d'un homme et d'une femme
ayant le même identifiant dans leurs tables respectives.

hommes mariés, femmes mariées.
SELECT H.h_id, F.f_id FROM homme H LEFT JOIN femme F ON H.h_id=F.f_id
j'obtiens tous les hommes et seulement les femmes qui ont le même identifiant que leur mâle.

hommes mariés et célibataires, femmes mariées.
SELECT H.h_id, F.f_id FROM homme H RIGHT JOIN femme F ON H.h_id=F.f_id
// ou
SELECT H.h_id, F.f_id FROM femme F LEFT JOIN homme H ON F.f_id=H.h_id
j'obtiens toutes les femmes et seulement les hommes qui ont le même identifiant que leur dame.

hommes mariés, femmes mariées et célibataires.
Et si je lance la requête :
SELECT H.h_id, F.f_id FROM homme H, femme F
sans jointure, je crée un joli produit cartésien.
En d'autres termes, une partouze.
Bon, ben, j'vas rentrer, moi... 