Différentes syntaxes SQL + Questions
Bonjour,
utilisant l'ancienne syntaxe de SQL lorsqu'on faisait une jointure sur de nombreuses tables on faisait :
code :
Code:
1 2 3 4
| SELECT * FROM table1, table2, table3....
WHERE table1.idx=table2.idy
AND table2.idz=table3.ida
AND... |
il n'y avait pas vraiment de notion de table racine
Mais suite à un article de sqlpro dont voici un bout :
code :
Code:
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)...
........... |
je me pose les questions suivantes :
dans la syntaxe moderne de sql, lorsqu'on écrit :
code :
Code:
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 |
la position de first_table a t'elle une importance ? (A part pour les left et right jointures)
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)