Bonjour,
utilisant l'ancienne syntaxe de SQL lorsqu'on faisait une jointure sur de nombreuses tables on faisait :
code :
il n'y avait pas vraiment de notion de table racine
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 SELECT * FROM table1, table2, table3.... WHERE table1.idx=table2.idy AND table2.idz=table3.ida AND...
Mais suite à un article de sqlpro dont voici un bout :
code :
je me pose les questions suivantes :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 SELECT * FROM T_CLIENT CLI -- le client (racine de l'arbre) JOIN T_ADRESSE ADR -- adresse, table d'entité (feuille de l'arbre) ON CLI.CLI_ID = ADR.CLI_ID JOIN T_TITRE TIT -- titre, table d'entité (feuille de l'arbre) ON CLI.TIT_CODE = TIT.TIT_CODE JOIN T_EMAIL EML -- mail, table d'entité (feuille de l'arbre) ON CLI.CLI_ID = EML.CLI_ID JOIN T_TELEPHONE TEL -- téléphone, table d'entité servant de jointure (noeud dans l'arbre) ON CLI.CLI_ID = TEL.CLI_ID JOIN T_TYPE TYP -- type de téléphone, table d'entité (feuille de l'arbre) ON TEL.TYP_CODE = TYP.TYP_CODE JOIN TJ_CHB_PLN_CLI CPC -- table de jointure (noeud dans l'arbre) ON CLI.CLI_ID = CPC.CLI_ID JOIN T_PLANNING PLN -- date du planning, table d'entité (feuille de l'arbre)... ...........
dans la syntaxe moderne de sql, lorsqu'on écrit :
code :
la position de first_table a t'elle une importance ? (A part pour les left et right jointures)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 SELECT field1, field2, field3 FROM first_table INNER JOIN second_table ON first_table.keyfield = second_table.foreign_keyfield INNER JOIN third_table ON third.keyfield = second_table.foreign_keyfield
On aurait pu aussi bien commencer par
SELECT field1, field2, field3 FROM second_table
et obtenir le même résultat. Non ?
Si c'est correct, cette nouvelle syntaxe me parait moins logique que l'ancienne, qu'en pensez-vous ?
Autre question : quand on fait des jointures sur x table, est-il correct d'annoncer qu'il faut x-1 conditions de jointure ? (sauf exception)
Partager