|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | |||||
|
Expert Confirmé
![]() ![]() |
Bonjour,
je viens à vous parce que je me suis rendu compte d'un problème sur un processus et que j'aimerais comprendre pourquoi je suis tombé sur ce problème. Lors d'un traitement, j'ai cette requête (celle d'origine) Code sql :
J'ai toujours pensé que le where devait servir au filtre et les jointures et bah.. à joindre les tables. Hors, si je fait cette modification : Code sql :
Je me retrouve avec un résultat, non pas faux, mais complètement vide... Je ne comprends pas la différence entre les deux. Si quelqu'un pouvait me l'expliquer, je lui en serait reconnaissant. Cordialement, Lyche
__________________
Citation:
|
|||||
|
|
00
|
|
|
#2 |
![]() ![]() ![]() Frédéric BROUARDExpert SGBDR & SQL Inscription : mai 2002 Messages : 10 954 ![]() |
C'est normal. Les jointures s'exécutent AVANT les filtres.
En jointure externe gauche vous aurez des NULL dans la table de droite afin de reprendre toutes les données de la table de gauche. En plaçant un filtre WHERE sur une colonne de la table u (table de droite) vous ré éliminez les NULL. En faisant : Code :
AND (u.champ_U = 'monFiltre' OR u.champ_U IS NULL) Ceci dit les deux requêtes ne sont pas équivalente et pour comprendre pourquoi relisez ma seconde phrase ! Bref, apprenez SQL. Mon livre, comme mon site web peuvent vous y aider ! A +
__________________
Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL Site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/ Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp. Blog SQL, SQL Server, modélisation données : http://blog.developpez.com/sqlpro http://www.sqlspot.com : modélisation, conseils, audit, optimisation, formation * * * * * Enseignant CNAM PACA - ISEN Toulon - CESI Aix en Provence * * * * * |
|
00
|
|
|
#3 | |
|
Expert Confirmé
![]() ![]() |
Merci pour la réponse.
Cordialement
__________________
Citation:
|
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com