Join

Jointure.

Besoin

Joindre les données de 2 tables.

Analyse

Une jointure consiste à faire correspondre les lignes de la 1ère table à celles de la 2nde, selon un algorithme théorique du type :

pour chaque ligne de la table 1 <span class="codeComment">  // Boucle externe</span>
  pour chaque ligne de la table 2 <span class="codeComment">// Boucle interne</span>
    retourne table1.*,table2.*

On voit que les 2 boucles (externe et interne) pourraient être interchangées que cela ne modifierait pas le résultat, à savoir le produit cartésien des 2 tables (les lignes retournées représentent toutes les combinaisons des données de la table 1 avec celles de la table 1).

Cependant ce n'est généralement pas ce que l'on souhaite obtenir, mais plutôt un appareillage de données selon un critère précis. Par exemple pour obtenue un résultat contenant l'adresse de chaque personne (et non plus toutes les adresses pour toutes les personnes) :

pour chaque ligne de PERSONNE <span class="codeComment">                                      // Boucle externe</span>
  pour chaque ligne de ADRESSE where ADRESSE.id=PERSONNE.FK_ADRESSE <span class="codeComment">// Boucle interne</span>
    retourne PERSONNE.*,ADRESSE.*

On voit que la même requête pourrait être exprimée en inversant les boucles :

pour chaque ligne de ADRESSE <span class="codeComment">                            // Boucle interne</span>
  pour chaque ligne de PERSONNE where PERSONNE.FK_ADRESSE=ADRESSE.id<span class="codeComment">  // Boucle externe</span>
    retourne PERSONNE.*,ADRESSE.*

Toutefois on voit

Conception

Exemples

Sélection d'enregistrements :

SELECT FROM EMPLOYEES emps, AGENCES ags
WHERE emps.AGENCE = ags.ID AND emps.NOM LIKE 'B%'
ORDER BY emps.NOM ASC