Formation Google AnalyticsSavez-vous bien utiliser les outils de mesure d'audience ?
Effectuez-vous un calcul de ROI (Retour sur investissement) pour savoir comment améliorer vos campagnes emarketing ?
Savez-vous utiliser les bons outils pour booster votre taux de transformation ?
La formation Web Analytics de Ranking Metrics, présentée par un expert reconnu officiellement par Google Analytics, vous apportera les réponses à toutes vos questions !
===> Informations et inscriptions.

Problème choix syntaxe jointure

Poster un nouveau sujet Imprimer cette discussion    Forum -> Développement d'un site Web   Les dernières discussions de ce forum sont disponibles au format RSS
Voir le sujet précédent :: Voir le sujet suivant  
Auteur Message
 
filidanril
Nouveau WRInaute

Inscrit le: 06 Déc 2004
Messages: 2

URL permanente de ce messagePosté le : Lun Aoû 04, 2008 11:07    Sujet du message: Problème choix syntaxe jointure

Bonjour,

j'ai créée une bdd de protéines qui contient notamment ces 5 tables :
- protein (id, subfamily_idSF, Name)
- subfamily (idSf, Family_idF, Name)
- family(idF, Class_idC, Name)
- class (idC, superclass_idSC, name)
- sueprclass (idSC, name)

J'aimerai sortir toutes les proteines qui appartiennent à la superclasse qui a l'id=1.

J'ai écris une requête avec join :

SELECT TF.ID
FROM subfamily SF
LEFT JOIN transcriptionfactor TF ON SF.idSF = TF.Subfamily_idSF LEFT JOIN family F ON F.idF = SF.Family_idF
LEFT JOIN class C ON C.idC= F.Class_idC
LEFT JOIN superclass SC ON SC.idSC = C.Superclass_idSC
WHERE SC.idSC=1

et une requête de cette sorte :

SELECT TF.ID FROM transcriptionfactor TF, subfamily SF, family F, class C, superclass SC
WHERE SF.idSF = TF.Subfamily_idSF
AND F.idF = SF.Family_idF
AND C.idC= F.Class_idC
AND SC.idSC = C.Superclass_idSC
AND SC.idSC=1

Elles marchent toutes les deux mais je ne sais quelle écriture conservée. En effet, la bdd est beaucoup plus grosse et j'ai de très nombreuses requêtes a effectuées et je n'arrive pas à savoir laquelle de ces écritures est la plus rapide et la plus formelle.
Laquelle me conseillez-vous?

Merci d'avance
 
filidanril
jcaron
WRInaute passionné
WRInaute passionné

Inscrit le: 13 Fév 2004
Messages: 521
Localisation: Paris

URL permanente de ce messagePosté le : Lun Aoû 04, 2008 12:03    Sujet du message: Problème choix syntaxe jointure

Attention: formellement, les deux notations ne veulent pas dire la même chose (mais il est possible que le résultat soit le même dans ton cas particulier). Elles voudraient dire la même chose si tu utilisais des JOINs "normaux" (JOIN tout court ou INNER JOIN).

Si tu fais ce changement, en pratique c'est exactement la même chose. La notation avec les JOINs est théoriquement plus formelle et certains la trouvent plus lisible, mais en pratique c'est pareil.

Si par contre tu tiens à ce que ce soit un LEFT JOIN alors comme elles ne sont pas équivalentes, tu n'as pas le choix entre les deux Smile

Jacques.
 
jcaron Visiter le site web du posteur
sureau
WRInaute occasionnel
WRInaute occasionnel

Inscrit le: 07 Mar 2005
Messages: 191
Localisation: annecy

URL permanente de ce messagePosté le : Lun Aoû 04, 2008 13:09    Sujet du message: Problème choix syntaxe jointure

De plus en utilisant des inner join ou les jointures de ton second cas, tu n'auras pas du tout les mêmes résultats en terme de ressources.

Il vaut mieux utiliser les méthodes avec join :
- les jointures en where ne font pas de différence entre le filtrage et la jointure (lors de la jointures, tous les enregistrements sont récupérés et lus pour voir si ils rentrent dans le where, alors qu'avec le join, seuls ceux de la condition ON sont analysés)
- Meilleur lisibilité car on distingue facilement les filtres de chaque table


Si tu as beaucoup d'enregistements dans tes tables, une petite exécution des 2 requetes de donnera rapidement une réponse (souvent visible à l'oeil Smile )
 
sureau Visiter le site web du posteur
filidanril
Nouveau WRInaute

Inscrit le: 06 Déc 2004
Messages: 2

URL permanente de ce messagePosté le : Lun Aoû 04, 2008 15:08    Sujet du message: Problème choix syntaxe jointure

Oki merci beaucoup a vous deux.

En effet, je pensais que les deux syntaxes voulaient dire la même chose donc j'ai changé LEFT JOIN par INNER JOIN et je vais donc utiliser cette syntaxe.

Encore merci et bonne continuation!
 
filidanril
 
Montrer les messages depuis:   
Revenir en haut    Forum -> Développement d'un site Web Toutes les heures sont au format GMT + 1 Heure
Page 1 sur 1 - 
Connexion
Nom d'utilisateur:    Mot de passe:      Se connecter automatiquement à chaque visite    

A lire dans l'actualité sur WRI :

CLIQUEZ ICI pour vous inscrire à WebRankInfo (forum, annuaire, outils...)

Connexion

© 2001-2005 phpBB Group, support français
Personnalisation : WebRankInfo ™


 ODP  Firefox  Alsacreations  annuaire webmaster Yagoort