JeuWeb - Crée ton jeu par navigateur
Jointures SQL ? - Version imprimable

+- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org)
+-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38)
+--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51)
+--- Sujet : Jointures SQL ? (/showthread.php?tid=1695)

Pages : 1 2


Jointures SQL ? - kurstley - 27-03-2008

Je voulais juste savoir comment effectuez vous vos jointures, biensur il y a trois grands types de jointures qui sont différentes, la page suivante l'explique bien http://cerig.efpg.inpg.fr/tutoriel/bases-de-donnees/chap20.htm.

Mais en fait ils ne parlent pa du tout de la simple jointure du type table.champs = table2.champs2, qui correspond pour eux, à une jointure interne de type INNER JOIN, c'est donc quoi la grande différence entre les deux ? c'est juste une syntaxe différente ou y a t-il un avantage / inconvénient à utiliser l'une ou l'autre jointure ?


RE: Jointures SQL ? - Zamentur - 27-03-2008

Si on parle de mysql
http://dev.mysql.com/doc/refman/5.0/fr/join.html

Citation :INNER JOIN et , (virgule) sont sémantiquement équivalents. Les deux opèrent une jointure totale sur les tables utilisées. Normalement, vous spécifiez les conditions de jointure dans la clause WHERE.

Donc la difference c'est que dans un cas tu utilises 1 catactère dans l'autre 10 caracteres... :good:


RE: Jointures SQL ? - Sephi-Chan - 27-03-2008

Salut,

Tout est ici, expliqué de manière précise et illustré par des exemples : Le SQL de A à Z : 3e partie - les jointures.

En fait, la principale différence entre les jointures internes ((INNER) JOIN, dont la forme raccourcie est JOIN) et externes (LEFT (OUTER) JOIN, RIGHT (OUTER) JOIN, FULL (OUTER) JOIN) se situe dans la gestion des valeurs NULL, mais l'article te l'expliquera mieux que moi, et avec des exemples, et si ça ne suffit pas, je te montrerai un système de traduction qui repose sur les jointures externes.

Et joindre dans le WHERE c'est le mal en terme de lisiblité, mieux vaut utiliser le mot clé.


Sephi-Chan


RE: Jointures SQL ? - Zamentur - 27-03-2008

Sephi-Chan a écrit :Et joindre dans le WHERE c'est le mal en terme de lisiblité, mieux vaut utiliser le mot clé.
Là tu vas contre l'indication de la référence...
En même temps en y réfléchissant par habitude je met aussi le mot clef, mais à moins d'avoir une requete sql très longue avec plein de table, je ne pense pas qu'il y ai vraiment de difference en terme de lisibilité.


RE: Jointures SQL ? - Sephi-Chan - 27-03-2008

La référence ? MySQL doit être le SGBDR à s'en éloigner le plus !

En tout cas, mes différents profs d'Oracle et les articles que j'ai pu lire incitaient à utiliser des jointures explicites plutôt qu'implicite. Le WHERE est fait pour restreindre, pas pour joindre. D'ailleurs, on ne peut pas faire toutes les jointures avec le WHERE, c'est bien la preuve qu'il n'est pas fait pour cela.

Ensuite, la sémantique et la lisibilité est laissée au goût de chacun. Ça n'impacte pas sur la rapidité du code. Smile


Sephi-Chan


RE: Jointures SQL ? - kurstley - 28-03-2008

Moi en cours j'ai toujours appris à mettre les jointures dans le where avec un égal, d'ailleurs c'est avec internet que je me suis aperçu que l'on pouvait faire une jointure avec JOIN, ca m'a paru bizarre car les profs n'en avait jamais parlé, enfin bon si le problème est seulement esthetique et de lisibilité entre une jointure de type INNER JOIN après le from et une jointure dans le where, c'est pas spécialement important je pense (h).

Et quand tu dis Sephi-Chan que WHERE est fait pour resteindre, pas pour joindre, d'un coté, une jointure dans WHERE est une restriction aussi au niveau du resultat.


RE: Jointures SQL ? - Sephi-Chan - 28-03-2008

Mais c'est une béquille. Tu ne peux faire qu'une jointure interne comme ça. Smile
Et puis en développement, faire de l'explicite est souvent mieux que l'implicite, pour la lisibilité.


Sephi-Chan


RE: Jointures SQL ? - keke - 31-03-2008

Ce que veut dire Sephi-Chan c'est que dans l'absolu, une JOINTURE est différent d'une CONDITION.
La jointure suit un traitement particulier en SQL qui de fait lui a consacré un formalisme particulier.

Techniquement tu peux aussi utiliser une condition, mais tu casses l'esprit du SQL (et peut-être même des optimisations de traitement) en agissant autrement.

MYSQL n'est cependant pas la BDD la mieux organisée en terme d'optimisation. Magdales n'utilise quasiment jamais le JOIN, sauf en cas de nécessité ou pour les purges BDD.

Kéké.


RE: Jointures SQL ? - Sephi-Chan - 31-03-2008

Voilà, c'est ça, les jointure sont différentes des conditions. Smile

J'ai du mal à imaginer une application qui n'utilise presque jamais de jointures ! :O
Si on m'enlevait les jointures, je serais bien ennuyé. Malgré cela, n'as-tu pas de nombreuses redondances ? Comment peux-tu faire d'internationalisation dynamique sans jointures ? Confused


Sephi-Chan


RE: Jointures SQL ? - keke - 31-03-2008

J'utilise les jointures je te rassure, mais par contre, je n'utilise pas le formalisme JOIN.

Un simple :
"Select toto from truc, machin Where truc.id_truc = machin.id_truc"

au lieu du :
"select toto from truc JOIN machin ON truc.id_truc = machin.id_truc"

Bref, je respecte pas le SQL strict ^^. (faudrait faire un bouton sur le serveur Mysql pour indiquer le SQL strict ^^)

Luch ^^

Kéké.